如何从 OnException 方法发送自定义对象?
How to send a custom object from OnException method?
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 网站 api 的模型过滤器。
它就像一个魅力!
但就我而言,我想要的是 return 自定义对象(奇怪的需求)返回给用户,例如:
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
}
我想从此函数发回对象,但此方法的 return 类型是 void
。
我知道 HttpResponseMessage
对象可以被扔回去,但我想以自定义的方式做...
我该怎么做?
我猜你想 return 那个 class 作为 JSON.
您可以做的仍然是使用 StringContent
构造函数,但传入一个 JSON 序列化字符串。您可以使用 Newtonsoft.Json 作为序列化。
throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError)
{
Content = new StringContent(JsonConvert.SerializeObject(yourObject))
});
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 网站 api 的模型过滤器。
它就像一个魅力!
但就我而言,我想要的是 return 自定义对象(奇怪的需求)返回给用户,例如:
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
}
我想从此函数发回对象,但此方法的 return 类型是 void
。
我知道 HttpResponseMessage
对象可以被扔回去,但我想以自定义的方式做...
我该怎么做?
我猜你想 return 那个 class 作为 JSON.
您可以做的仍然是使用 StringContent
构造函数,但传入一个 JSON 序列化字符串。您可以使用 Newtonsoft.Json 作为序列化。
throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError)
{
Content = new StringContent(JsonConvert.SerializeObject(yourObject))
});