Как загрузить профиль только что вошедшего пользователя перед перенаправлением

Я запустил проект ASP.NET MVC 2 и строю на основе кода, который был сгенерирован автоматически.

Проблема, с которой я столкнулся, заключается в том, что после входа пользователя в систему выясняется, что профиль вновь вошедшего пользователя не загружается в HttpContext , поэтому я получаю ProviderException с сообщением «Это свойство не может быть установлено для анонимных пользователей» при попытке установить значение свойства в профиле текущего пользователя.

Для действия входа в систему только POST Visual Web Developer 2010 Express в основном генерировал:

    [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 ) Строка Я предполагал, что информация о вновь вошедшем аккаунте будет немедленно доступна контроллеру, но это не похоже на случай. Если, например, я добавлю profile.SetPropertyValue ("MyProfileProperty", "test") под вызовом FormsService # SignIn, тогда я получу исключение ProviderException "Это свойство не может быть установлено для анонимных пользователей ».

Как мне загрузить только что вошедшего пользователя ' s профиль в HttpContext , чтобы я мог установить значение свойства в его или ее профиле перед следующим запросом?

6
задан Daniel Trebbien 20 August 2011 в 15:53
поделиться