Часть моего приложения MVC 5 не работает Иногда при развертывании в режиме реального времени.
Моя регистрационная форма в настоящее время работает, но я постоянно получаю это El электронное письмо от Elmah.Что может вызвать это сообщение?мой сайт имеет более 1000 пользователей, но elmah постоянно отправляет сообщение об ошибке.это возможно из-за атак?
System.NullReferenceException: Object reference not set to an instance of an object.
at Min_Site.Controllers.AccountController.Register(RegisterViewModel register, String PreviousUrl)
at lambda_method(Closure , ControllerBase , Object[] )
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c.<BeginInvokeSynchronousActionMethod>b__9_0(IAsyncResult asyncResult, ActionInvocation innerInvokeState)
и это мой регистрационный код:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterViewModel register, string PreviousUrl)
{
string preurl = PreviousUrl;
string referrername = "0";
int hash = db.Plan.FirstOrDefault(p => p.PlansID == 0).Min;
int period = db.Plan.FirstOrDefault(p => p.PlansID == 0).Period;
int Profit = db.Plan.FirstOrDefault(p => p.PlansID == 0).Profit;
var Main = db.Plan.FirstOrDefault(p => p.PlansID == 0).MaintenanceFee;
int refid = 0;
var price_in_usd = new PriceOnline();
if (preurl != null)
{
if (preurl.Contains("="))
{
string[] array = preurl.Split('=');
referrername = array[1];
refid = db.User.FirstOrDefault(u => u.UserName == referrername).UserID;
}
}
ViewBag.CountryID = new SelectList(db.Country, "CountryID", "CountryName", register.CountryID);
int max = db.User.Max(u => u.UserID);
if (this.IsCaptchaValid(""))
{
if (ModelState.IsValid)
{
var mail = string.IsNullOrEmpty(register.Email) ? null : register.Email.Trim().ToLower();
if(mail != null)
{
if (!db.Users.Any(u => u.Email == mail))
{
var keyNew = Helper.GeneratePassword(10);
var password = Helper.Encrypt(register.pass, keyNew);
Users user = new Users()
{
UserID = max + 1,
ActiveCode = Guid.NewGuid().ToString().Replace("-", ""),
ActiveLinkDate = DateTime.Now,
CreateDate = DateTime.Now,
IsActive = false,
RoleID = 2,
Email = mail,
FullName = register.UserName,
UserName = register.UserName,
Password = password,
CountryID = register.CountryID,
referrer = refid,
Accept = register.Accept,
SecretKey = Base32Encoder.ToBase32String(GoogleAuthenticator.GenerateSecretKey()),
IP = (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ?? Request.ServerVariables["REMOTE_ADDR"]).Split(',')[0].Trim(),
HostName = DetermineCompName((Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ?? Request.ServerVariables["REMOTE_ADDR"]).Split(',')[0].Trim()),
Mac = GetMACAddress(),
Vcode = keyNew,
IsSuscibeOk = true
};
Account account = new Account()
{
UserID = user.UserID,
Balans = 0,
RefLink = "https://x.com/?ref=" + user.UserName,
LastLogin = DateTime.Now
};
Deposit dep = new Deposit()
{
UserID = user.UserID,
PlanID = 0,
DepositBeginDate = DateTime.Now,
DepositEndDate = DateTime.Now.AddDays(period),
Amount = 3,
AmountInCoin = Convert.ToDouble(3 / price_in_usd),
CoinID = 19,
AmountBit = Convert.ToDouble(3 / price_in_usd),
Hash = hash,
IsPayed = true,
TransactionID = 3,
Price = price_in_usd,
IsPriceOnline = true
};
db.User.Add(user);
db.Account.Add(account);
db.Deposit.Add(dep);
db.SaveChanges();
var sr = new StreamReader(Server.MapPath("~/App_Data/Template/ButtonTem.html"));
string MailText = sr.ReadToEnd();
sr.Close();
string body = PartialToStringClass.RenderPartialView("EmailSend", "Activeuser", user);
MailText = MailText.Replace("[User]", user.UserName);
MailText = MailText.Replace("[subject]", "WELCOME!");
MailText = MailText.Replace("[text]", body);
MailText = MailText.Replace("[IP]", (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ?? Request.ServerVariables["REMOTE_ADDR"]).Split(',')[0].Trim());
SendEmailGmail.SendSupport(user.Email, "Welcome Dear " + user.UserName.ToString(), MailText);
if (refid != 0)
{
RefViewModel vm = new RefViewModel();
vm.UserModel = db.User.FirstOrDefault(u => u.UserID == refid);
vm.RefUserModel = db.User.FirstOrDefault(u => u.UserID == user.UserID);
string bodycom1 = PartialToStringClass.RenderPartialView("EmailSend", "Referal", vm);
var sr1 = new StreamReader(Server.MapPath("~/App_Data/Template/ButtonTem.html"));
string MailText1 = sr1.ReadToEnd();
sr1.Close();
MailText1 = MailText1.Replace("[User]", db.Users.FirstOrDefault(u => u.UserID == refid).UserName);
MailText1 = MailText1.Replace("[subject]", "Referral User");
MailText1 = MailText1.Replace("[text]", bodycom1);
MailText1 = MailText1.Replace("[IP]", (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ?? Request.ServerVariables["REMOTE_ADDR"]).Split(',')[0].Trim());
SendEmailGmail.SendNoReply(db.User.FirstOrDefault(u => u.UserID == refid).Email, "Referral User", MailText1);
}
//return Content("Success");
ViewBag.Status = true;
ViewBag.ErrMessage = "Register Is Done Please Confirm Your Email Address Within 24 Hours";
return View("Register", register);
}