2013-12-13 101 views
0

我有一個相當奇怪的問題。希望任何人都可以解釋一下,因爲我無法在任何地方找到答案。Asp.Net MVC Cookie拋出異常

場景:調用控制器操作併發生異常。同時我向Response.Cookies添加一個新的cookie。

但沒有cookie與響應一起發送(甚至在Fiddler中檢查)。

有趣的是,在使用通用處理程序的web表單中,相同的場景對我來說很有用。

有什麼想法?

代碼片斷

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

    throw Exception("test"); 
} 
+0

看起來異常打破了響應管道。您可以在控制器級別添加全局錯誤處理或global.asax的Application_OnError事件。 – Dilish

回答

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);  
} 
+0

出於好奇..當你這樣做,你的迴應的當前狀態,包括cookie,保存? –

+0

@André - AFAIK,是的。 –

+0

謝謝!我在想同樣的事情,但希望也許這只是一個錯誤,我可以讓例外。 – Pavdro