Исключение nullreference при добавлении сеансового cookie в ServiceStack

Этот вопрос во многом зависит от вопроса / ответа здесь:

Переподключение к сеансу Servicestack в приложении asp.net MVC4

В основном у меня есть приложение asp.net MVC, которое использует ServiceStack для аутентификации. Как предложено в вышеупомянутом вопросе, я добавляю куки-файл сеанса к ответу, а затем добавляю его в контейнер cookie jsonserviceclient.

Используя этот код для аутентификации пользователя на экране входа в систему:

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult login(UserModel user)
    {
        try
        {
            var AuthResponse = client.Post(new Auth
            {
                provider = "credentials",
                UserName = user.user_id,
                Password = user.password,
                RememberMe = true
            });

            if (AuthResponse.SessionId != null)
            {
                FormsAuthentication.SetAuthCookie(AuthResponse.UserName, true);
                var response = System.Web.HttpContext.Current.Response.ToResponse();
                response.Cookies.AddSessionCookie(
                    SessionFeature.PermanentSessionId, AuthResponse.SessionId); 

                return Redirect("/Default");
            }
        }
        catch (Exception ex)
        {
            FormsAuthentication.SignOut(); 
            return Redirect("/");
        }
        return View();
    }

Тем не менее, я получаю исключение null ref из строки:

response.Cookies.AddSessionCookie(SessionFeature.PermanentSessionId, AuthResponse.SessionId);

Трассировка стека выглядит так:

at ServiceStack.ServiceHost.Cookies.ToHttpCookie(Cookie cookie)
at ServiceStack.ServiceHost.Cookies.AddCookie(Cookie cookie)
at ServiceStack.ServiceHost.Cookies.AddSessionCookie(String cookieName, String cookieValue, Nullable`1 secureOnly)
at FmStoreScreenMvc3.Controllers.AuthController.login(UserModel user) in <project> 51

Мне интересно, если что-то явно не так с этой конфигурацией.

Обновление / примечание Я изменил неправильную строку (где выбрасывается nullref) на:

response.Cookies.AddSessionCookie("foo", "bar", false); 

Я все еще получаю ту же ошибку. Просто охота за тем, что является нулевым и почему

1 ответ

Решение

Вместо:

response.Cookies.AddSessionCookie(
  SessionFeature.PermanentSessionId, AuthResponse.SessionId);

Пытаться:

response.SetCookie(SessionFeature.PermanentSessionId, 
    AuthResponse.SessionId, TimeSpan.FromDays(14)));
Другие вопросы по тегам