【问题标题】:Asp.Net MVC cookies on exception thrown抛出异常的 Asp.Net MVC cookie
【发布时间】:2013-12-13 12:41:04
【问题描述】:

我遇到了一个很奇怪的问题。希望任何人都可以阐明,因为我无法在任何地方找到答案。

场景:调用控制器动作并发生异常。同时我在 Response.Cookies 中添加了一个新的 cookie。

但是没有 cookie 随 Response 一起发送(甚至在 Fiddler 中检查过)。

有趣的是,之前在使用通用处理程序的 Web 表单中,同样的场景也适用于我。

有什么想法吗?

代码sn-p

[HttpGet]
public FileContentResult MyAction()
{
    HttpCookie newCookie = new HttpCookie("error-exc", "error") { HttpOnly = false };
    this.HttpContext.Response.Cookies.Add(newCookie);

    throw Exception("test");
}

【问题讨论】:

  • 看起来异常中断了响应管道。您可以在控制器级别或 global.asax 的 Application_OnError 事件中添加全局错误处理。

标签: asp.net asp.net-mvc-4 exception cookies controller-action


【解决方案1】:

确保将 cookie 发送到客户端的一种方法是覆盖控制器中的 OnException() 虚拟方法:

protected override void OnException(ExceptionContext filterContext) {
    filterContext.ExceptionHandled = true;
    filterContext.HttpContext.Response.StatusCode = 500;
    filterContext.HttpContext.Response.StatusDescription = "Internal server error";
    // whatever...
    base.OnException(filterContext);    
}

【讨论】:

  • 出于好奇.. 当您这样做时,您的响应的当前状态(包括 cookie)是否会保留?
  • 谢谢!我也是这么想的,但希望这可能只是一个错误,我可以留下异常。
猜你喜欢
  • 2011-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多