이것은 MVC 4 인터넷 응용 프로그램입니다. 역할 공급자 및 역할 관리자를 Web.config 파일의 SimpleRoleProvider 및 SimpleMembershipProvider로 설정했지만 "WebSecurity"클래스의 다른 메서드를 호출하기 전에 "WebSecurity.InitializeDatabaseConnection"메서드를 호출해야합니다. 전역, asax.cs 파일에서 WebSecurity.InitializeDatabaseConnection을 초기화 했음에도 예외입니다. 나는이 속성이 Authorized 속성의 Roles 속성이 프로그래밍 방식으로 완벽하게 작업을 생성하고 할당했기 때문에 이것이 제대로 초기화되었다는 것을 알고 있습니다. User UserName을 검색하여 잊어 버렸고 로그인 할 수없는 경우 이메일로 보내려고합니다. 감사합니다. 당신이 InitializeDatabaseConnection 전화 않았더라도SimpleMembershipProvider.GetUserNameByEmail 메서드를 사용하는 방법을 알 수 없습니다.
[HttpPost]
[CaptchaVerify("Captcha is not valid")]
[AllowAnonymous]
public ActionResult ForgotUserNameOrPassword(UserProfile model, FormCollection collection)
{
if (!ModelState.IsValid)
{
ViewBag.Error = "The Captcha answer is incorrect";
return View();
}
else
{
SimpleMembershipProvider mySMP = new SimpleMembershipProvider();
int outRecs;
dynamic email = new Postal.Email("UserNameEmail");
MembershipUserCollection myUserCol =mySMP.FindUsersByEmail(model.UserEmail, 0, 0, out outRecs);
email.Username = myUserCol;
email.To = model.UserEmail;
email.From = model.UserEmail;
email.Send();
return View("../Account/Login");
}
}
그런 식으로 SimpleMembershipProvider를 인스턴스화하지 마십시오. Memberhip.Provider라고 말하면 인스턴스화 된 공급자를 얻을 수 있습니다. 그러나 그 이상의 문제는 SimpleMembershipProvider가 이러한 메소드를 구현하지 않는다는 것입니다. 따라서 데이터베이스를 수동으로 쿼리하면됩니다. –