Osk*_*erg 12 asp.net-mvc owin katana asp.net-mvc-5
我刚开始摆弄OWIN/Katana和MVC.NET 5.0.默认的Visual Studio 2013 ASP.NET Web应用程序/ MVC模板具有一个带有LogOut()操作的AccountController:
public ActionResult LogOff() {
AuthenticationManager.SignOut();
return RedirectToAction("Index", "Home");
}
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,这很好用.但是,当我更改响应状态代码时,例如:
Response.SetStatus(HttpStatusCode.SeeOther);
Run Code Online (Sandbox Code Playgroud)
... AuthenticationManager.SignOut()方法不再导致用户注销.这是为什么?
我尝试了不同的方法来设置响应的http状态代码,以及更改像"位置"这样的http标头,并且始终具有相同的结果 - 当执行LogOff()操作时,如果我进入回火状态,则用户不会注销随着回应.
我尝试不使用RedirectToAction(它显式实现302重定向 - 这是另一个故事),而不是返回ActionResult,但这没有任何区别 - 不是我真的希望它.
使用Fiddler我可以看出浏览器看起来的响应看起来很好,没有任何意外.
我也尝试在工作中查看OWIN中间件的源代码,但我仍然不熟悉该架构,我找不到我能掌握的答案.我需要你的帮助来解决这个问题,所以提前谢谢你!
AuthenticationManager.SignOut()失败的原因是Response.SetStatus(HttpStatusCode.SeeOther)内部结束了响应:
public static void SetStatus(this HttpResponseBase response, int httpStatusCode)
{
response.StatusCode = httpStatusCode;
response.End();
}
Run Code Online (Sandbox Code Playgroud)
(见System.Web.WebPages.ResponseExtensions)
在此之后,自然ResponseManager无法操纵响应以删除cookie等.
| 归档时间: |
|
| 查看次数: |
5035 次 |
| 最近记录: |