2012-03-06 25 views
2

我想在客戶端使用jQuery處理所有服務器端錯誤。爲了這個目的,像這樣我的MVC3應用程序中創建axception處理attrbute:如何使用ASP.NET MVC3拋出ajax錯誤

public class JsonErrorHandlerAttribute : HandleErrorAttribute 
{ 
    public override void OnException(ExceptionContext filterContext) 
    { 
     filterContext.ExceptionHandled = true; 
     JavaScriptSerializer jsSerializer = new JavaScriptSerializer(); 
     string result = jsSerializer.Serialize(new { error = filterContext.Exception.Message }); 
     filterContext.HttpContext.Response.Write(result); 
    } 
} 

但是這種方法只是返回200 OK結果正常JSON響應。 A不想在客戶端解析它,以確定它是否有錯誤。所以我的問題是拋出ajax錯誤的最佳方式是什麼?

回答

4

添加到您的功能

HttpContext.Response.StatusCode = 500; 

此,如果你使用jQuery AJAX會引發錯誤的事件,那裏你可以作出反應。

+1

一定要使用正確的代碼 - 使用500作爲毯子「發生了不好的事情」返回是不好的做法。以下是狀態代碼列表:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html在正確的情況下選擇合適的代碼非常重要。 – Fourth 2012-03-06 04:54:53

+0

簡單又幹淨 - 謝謝! – koss 2012-03-06 05:14:01

+0

@Fourth:Thx,你說的對,應該考慮!但要保持簡單,我認爲500就沒問題。 – Marc 2012-03-06 05:52:31