0

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

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

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

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

有什么想法吗?

代码片段

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

    throw Exception("test");
}
4

1 回答 1

2

确保将 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);    
}
于 2013-12-13T13:46:22.163 回答