ASP.NET MVC 2 프로젝트를 시작한 후 자동으로 생성 된 코드를 구축하고 있습니다.리디렉션 전에 새로 로그인 한 사용자의 프로필을로드하는 방법
내가 겪고있는 문제는 사용자가 로그인 한 후 새로 로그인 한 사용자의 프로필이 HttpContext
에로드되지 않은 것 같습니다. 따라서 ProviderException
에 "이 속성 현재 사용자 프로필에서 속성 값을 설정하려고 할 때 "익명 사용자에 대해 설정할 수 없습니다." 후 로그온시의 조치에 대한
public class FormsAuthenticationService : IFormsAuthenticationService
{
public void SignIn(string userName, bool createPersistentCookie)
{
if (String.IsNullOrEmpty(userName)) throw new ArgumentException("Value cannot be null or empty.", "userName");
FormsAuthentication.SetAuthCookie(userName, createPersistentCookie);
}
public void SignOut()
{
FormsAuthentication.SignOut();
}
}
: FormsService
은 (또한 생성) 유형 FormsAuthenticationService
의 컨트롤러의 속성입니다
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (MembershipService.ValidateUser(model.UserName, model.Password))
{
FormsService.SignIn(model.UserName, model.RememberMe);
//...
FormsService.SignIn(model.UserName, model.RememberMe)
라인 이후에 나는 새로 로그인 한 계정에 대한 정보를 컨트롤러에 즉시 사용할 수 있다고 가정 했었지만이 경우에는 나타나지 않습니다. 예를 들어, FormsService # SignIn 호출 아래에 profile.SetPropertyValue("MyProfileProperty", "test")
을 추가하면 ProviderException
"익명 사용자에 대해이 속성을 설정할 수 없습니다."가 표시됩니다.
HttpContext
에 새로 로그인 한 사용자의 프로필을로드하여 다음 요청 전에 프로필에서 속성 값을 설정할 수 있도록하려면 어떻게해야합니까?
그러면 기존 프로필을로드하지 않고 새 프로필을 만들 수 있습니다. –
아니요, 기존 프로필을로드한다는 가정은 잘못되었습니다. 그것을 밖으로 시도하십시오. –
"인수로 사용자 이름을 사용하여 ProfileBase.Create()를 호출하면 TableStorage에 대한 조회가 수행되고 해당 사용자 이름과 연결된 데이터가 실제로 검색된다는 사실을 깨닫기까지는 다소 시간이 걸립니다. 오해의 소지가 있습니다. Load() 또는 Get()을 기대합니다. " 이 질문에 대한 답변을 참조하십시오 : http://stackoverflow.com/questions/1126719/asp-net-sql-profile-provider-does-the-profilebase-create-method-hit-db –