2016-04-03 30 views
1

這聽起來很奇怪,但我想弄清楚WHERE有關異常的調試信息是從MVC Web API中傳輸的。每當發生異常時,它返回一個對象(JSON格式因爲我除去XML格式化器)具有以下屬性:MVC Web API異常處理程序JSON調試信息與OWIN/Kotana

  • 消息

  • ExceptionMessage

  • ExceptionType

  • 堆棧跟蹤

WebApiConfig.Register()

config.Services.Replace(typeof(IExceptionHandler), new CustomExceptionHandler()); 

取代現有實現IExceptionHandler與下面的行然而,即使我可以證實,在發生異常時(通過調試斷點)新的處理程序被調用時,具有關於錯誤的調試信息的相同JSON對象被返回。

我的問題是:什麼股票系統或機制負責生成和發送此信息?

回答

0

採取的的ExceptionHandler

Handle方法看看Global Error Handling in ASP.NET Web API 2

ExceptionHandlerContext類表示在其中未處理的例外處理髮生時

ExceptionHandlerContext.Result

上下文

獲取或設置處理異常時提供響應消息的結果。

自定義錯誤消息異常處理程序

的下方以下產生定製的錯誤響應到客戶端,包括電子郵件地址用於接觸支撐。

class OopsExceptionHandler : ExceptionHandler 
{ 
    public override void HandleCore(ExceptionHandlerContext context) 
    { 
     context.Result = new TextPlainErrorResult 
     { 
      Request = context.ExceptionContext.Request, 
      Content = "Oops! Sorry! Something went wrong." + 
         "Please contact [email protected] so we can try to fix it." 
     }; 
    } 

    private class TextPlainErrorResult : IHttpActionResult 
    { 
     public HttpRequestMessage Request { get; set; } 

     public string Content { get; set; } 

     public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken) 
     { 
      HttpResponseMessage response = 
          new HttpResponseMessage(HttpStatusCode.InternalServerError); 
      response.Content = new StringContent(Content); 
      response.RequestMessage = Request; 
      return Task.FromResult(response); 
     } 
    } 
} 

可以使用IHttpActionResult擴展的Web API來創建你想要的任何響應體。