之前加載一個新登錄的用戶的個人資料,我開始一個ASP.NET MVC 2項目,我建立關閉該自動生成的代碼。如何重定向
,我遇到的問題是,用戶登錄後,看來的新登錄的用戶配置文件沒有加載到HttpContext
,所以我得到一個ProviderException
消息「這個屬性當試圖在當前用戶的配置文件中設置屬性值時,不能爲匿名用戶設置。
爲後只准登錄行動,的Visual Web Developer 2010速成基本產生:
[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
是FormsAuthenticationService
型(也產生)的控制器的特性:
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.SignIn(model.UserName, model.RememberMe)
線後,我是假設該信息爲新登錄的賬戶就可以立即得到控制,但是這似乎並不如此。如果,例如,我調用FormsService#簽到下面添加profile.SetPropertyValue("MyProfileProperty", "test")
,然後我得到了ProviderException
「這個屬性不能爲匿名用戶可以設置」。
如何將新登錄用戶的配置文件加載到HttpContext
中,以便我可以在下一個請求之前在他/她的配置文件中設置屬性值?
我假設的輪廓,然後加載到Session時,「下一個」頁面登錄後加載。這是否正確? – 2011-01-19 16:00:12
@Nick:在這個實現中,配置文件在重定向之前立即被加載到會話中。 – 2011-01-19 16:03:16