2016-04-03 12 views
1

Bu durum biraz garip gelecektir, ancak WHERE hata ayıklama bilgilerini bir MVC Web API'sından iletilmek üzere anlamaya çalışıyorum.MVC Web API İstisna İşleyici JSON Hata Ayıklama Bilgisi ile OWIN/Kotana

  • İleti

  • ExceptionMessage

  • ExceptionType

  • StackTrace: Bir istisna oluşunca, aşağıdaki özelliklere sahip bir nesne (XML biçimlendirici kaldırıldı çünkü JSON formatlı) döndürür

ben bir istisna (hata ayıklama kesme noktaları yoluyla) ortaya çıktığında yeni işleyicisi çağrıldığını IS onaylamak mümkün olmama rağmen, Ancak

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

WebApiConfig.Register() aşağıdaki satırı ile IExceptionHandler mevcut uygulama yerini, hatayla ilgili hata ayıklama bilgileriyle aynı JSON nesnesi döndürülür.

Sorum şu: Bu bilgiyi oluşturmak ve göndermek için hangi stok sistemi veya mekanizması sorumludur?

cevap

0

ExceptionHandler

arasında Handle yöntemde Global Error Handling in ASP.NET Web API 2

ExceptionHandlerContext sınıf görebilirsiniz işlenmeyen kural dışı durum işleme

ExceptionHandlerContext.Result

meydana bağlamı temsil eder

İstisna ele alındığında yanıt mesajını veren sonucu alır veya ayarlar.

Özel Hata Mesajı İstisna Handler

Destek ekibine ulaşmak için bir e-posta adresi dahil olmak üzere müşterilerine özel bir hata yanıtı aşağıda üretir aşağıdaki.

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

İstediğin yanıt gövdesini oluşturmak için web API genişletmek için IHttpActionResult kullanabilirsiniz.

İlgili konular