Исключение 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)));