Я только начал играть с OWIN/Katana и MVC.NET 5.0. Шаблон веб-приложения ASP.NET по умолчанию для Visual Studio 2013 для веб-приложений/MVC имеет AccountController с действием LogOut():
public ActionResult LogOff() {
AuthenticationManager.SignOut();
return RedirectToAction("Index", "Home");
}
Как и ожидалось, это работает отлично. Однако, когда я изменяю код состояния ответа, например. по:
Response.SetStatus(HttpStatusCode.SeeOther);
... Метод AuthenticationManager.SignOut() больше не приводит к тому, что пользователь выходит из системы. Почему это?
Я пробовал разные подходы для установки кода статуса HTTP для ответа, а также для изменения заголовков HTTP, таких как Location, и всегда с тем же результатом - пользователь не выходил из системы при выполнении действия LogOff(), если я получить в отпуск с ответом.
Я попробовал не использовать RedirectToAction (который явно реализует перенаправление 302 - это еще одна история), а не возвращать ActionResult, но это не имело никакого значения - не то, что я действительно ожидал бы этого.
Используя Fiddler, я могу сказать, что ответ, как кажется браузеру, выглядит отлично, не сдерживая никаких неожиданностей.
Я также пробовал просматривать исходный код промежуточного программного обеспечения OWIN на работе, но архитектура до сих пор не знакома мне, и я не нашел ответов, которые я мог бы понять там. Мне нужна твоя помощь в сортировке, так что спасибо заранее!