Регистрация пользователя в mvc 5 и ошибки elmah - PullRequest
0 голосов
/ 30 января 2019

Часть моего приложения 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);
                    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...