2015-06-03 42 views
1
public override void OnException(
     System.Web.Http.Filters.HttpActionExecutedContext actionExecutedContext) 
    { 
     if (actionExecutedContext.Exception != null) 
      Elmah.ErrorSignal.FromCurrentContext().Raise(actionExecutedContext.Exception); 
     base.OnException(actionExecutedContext); 


     throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError) 
     { 
      Content = new StringContent(actionExecutedContext.Exception.Message), 
      ReasonPhrase = "Deadly Exception", 
     }); 
    } 

這是我的模型傳遞給任何asp.net web api的過濾器。如何從OnException方法發送自定義對象?

它就像一個魅力!

但在我的情況,我要的是要返回自定義對象(奇怪的需要)的用戶,如:

public class ErrorModel 
{ 
    public int StatusCode {get;set;} 
    public string ErrorMsg {get;set;} 
} 

我想要做的是(如果可能):

public override void OnException(
     System.Web.Http.Filters.HttpActionExecutedContext actionExecutedContext) 
    { 



     ErrorModel er = new ErrorModel(); //////////// object of class 


     if (actionExecutedContext.Exception != null) 

     er.StatusCode =200 
     er.ErrorMsg="My Custom Msg" 

     // return er object 

    } 

我想從此函數返回對象,但此方法的返回類型爲void

我知道HttpResponseMessage對象可以後仰,但我想這樣做自定義的方式...

我該怎麼辦呢?

回答

2

我想你想把這個類作爲JSON返回。

你可以做什麼仍然使用StringContent構造函數,但傳入一個JSON序列化字符串。你可以使用Newtonsoft.Json作爲序列化。

throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError) 
{ 
    Content = new StringContent(JsonConvert.SerializeObject(yourObject)) 
}); 
+0

優秀的帕特里克。非常感謝... – micronyks

+0

我有另一個相同類別的問題... – micronyks

+0

http://stackoverflow.com/questions/30622911/how-to-send-custom-object-with-modelstate-or-expand-modelstate-對象 – micronyks

相關問題