Helpex - Trao đổi & giúp đỡ Đăng nhập
6

Tôi đã tạo ứng dụng MVC 4. Trong ứng dụng đó Nếu người dùng quên mật khẩu, tôi có phương pháp gửi email cho người dùng để đặt lại mật khẩu. Tôi đang sử dụng thành viên asp.net Identity

Tôi nhận được thông báo lỗi sau khi triển khai dự án này trong máy chủ web. Nó hoạt động hoàn hảo ở chế độ localhost của tôi.

Thông báo lỗi

Không thể chỉnh sửa Người dùng này Thao tác bảo vệ dữ liệu không thành công. Điều này có thể do không tải hồ sơ người dùng cho ngữ cảnh người dùng của luồng hiện tại, đây có thể là trường hợp luồng đang mạo danh.!

đây là phương pháp quên mật khẩu

    [AllowAnonymous]
    public ActionResult ForgotPassword()
    {
        return View();
    }            

    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> ForgotPassword(ForgotPasswordViewModel model)
    {

        if (model.UserName == null)
        {
            ModelState.AddModelError("", "Please enter the Username");
        }

        if (model.Email == null)
        {
            ModelState.AddModelError("", "Please enter the Email ID");
        }

        if (model.Email == null & model.UserName == null)
        {
            ModelState.AddModelError("", "Please enter the Username and Email ID");
        }

        if(ModelState.IsValid)
        {
            var username = await UserManager.FindByNameAsync(model.UserName);
            var user = await UserManager.FindByEmailAsync(model.Email);



            if (user != null && username != null)
            {
                ApplicationDbContext context = new ApplicationDbContext();
                UserStore<ApplicationUser> store = new UserStore<ApplicationUser>(context);


                var provider = new Microsoft.Owin.Security.DataProtection.DpapiDataProtectionProvider("MyProject"); 
                UserManager.UserTokenProvider = new Microsoft.AspNet.Identity.Owin.DataProtectorTokenProvider<ApplicationUser>(provider.Create("EmailConfirmation"));
                var code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);

                System.Net.Mail.MailMessage m = new System.Net.Mail.MailMessage(
                new System.Net.Mail.MailAddress("sample@email.lk", "My Application"),
                new System.Net.Mail.MailAddress(user.Email));
                m.Subject = "Reset your Password";
                m.IsBodyHtml = true;

                m.Body = string.Format("<img src=\"@@IMAGE@@\" alt=\"\"><BR/><BR/>Hi {0},<BR/><BR/>Please click the below link to reset your password. <BR/><BR/> <a href=\"{1}\" title=\"Reset Password\">Reset Password</a>", user.UserName, Url.Action("ResetPassword", "Account", new { UserId = user.Id, code = code }, Request.Url.Scheme)) + string.Format("<BR/><BR/>Regards,<BR/>We Are <BR/>");



                 string attachmentPath = Server.MapPath("~/Images/hec-logo.png");

                string contentID = Path.GetFileName(attachmentPath).Replace(".", "") + "@zofm";

                Attachment inline = new Attachment(attachmentPath);
                inline.ContentDisposition.Inline = true;
                inline.ContentDisposition.DispositionType = DispositionTypeNames.Inline;
                inline.ContentId = contentID;
                inline.ContentType.MediaType = "image/png";
                inline.ContentType.Name = Path.GetFileName(attachmentPath);
                m.Attachments.Add(inline);

                // replace the tag with the correct content ID
                m.Body = m.Body.Replace("@@IMAGE@@", "cid:" + contentID);

                System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("11.11.11.111");
                smtp.Port = 11;
                smtp.Credentials = new System.Net.NetworkCredential("sample@email.lk", "8888888");
                smtp.EnableSsl = false;
                smtp.Send(m);

                // Don't reveal that the user does not exist or is not confirmed

            }



            return View("ForgotPasswordConfirmation");
        }


      else 
      {
            ModelState.AddModelError("", "The Username or Email ID is invalid.");
      }
        // If we got this far, something failed, redisplay form
        return View(model);
    }
6 hữu ích 1 bình luận 2.6k xem chia sẻ
9

Tôi đã gặp vấn đề tương tự, sau đó sau nhiều nghiên cứu, tôi phát hiện ra rằng vấn đề là trong quá trình triển khai IIS

vì vậy theo chuỗi này, tôi có thể khắc phục sự cố của mình

Thao tác bảo vệ dữ liệu không thành công. Điều này có thể do không tải hồ sơ người dùng cho ngữ cảnh người dùng của luồng hiện tại, đây có thể là trường hợp luồng đang mạo danh.

  • Mở Trình quản lý IIS của bạn

  • Tìm hiểu AppPool mà ứng dụng của bạn đang sử dụng bằng cách chọn Ứng dụng của bạn, nhấp chuột phải vào ứng dụng đó và chọn Quản lý ứng dụng ->
    Cài đặt nâng cao .

Gặp lỗi khi đặt lại mật khẩu

  • Sau đó, ở phía trên bên trái, hãy chọn Hồ bơi ứng dụng và tiếp tục và chọn Nhóm ứng dụng được ứng dụng của bạn sử dụng.

  • Nhấp chuột phải vào nó và chọn Cài đặt Nâng cao, Đi tới Phần Mô hình Quy trình và Tìm Tùy chọn “Tải Hồ sơ Người dùng” và đặt nó thành
    true.

Gặp lỗi khi đặt lại mật khẩu

9 hữu ích 1 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ c# asp.net asp.net-mvc-4 asp.net-identity forgot-password , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading