public class JgoExceptionFilterAttribute : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext actionExecutedContext)
{
Utility.Logger.log.Error(
"Type:" + actionExecutedContext.Exception.GetType().ToString() +
":Url:" + actionExecutedContext.Request.RequestUri +
":Body:" + GetBodyFromRequest(actionExecutedContext) +
//":Message:" + actionExecutedContext.Exception.Message +
//":StackTrace:" + actionExecutedContext.Exception.StackTrace +
":BaseMessage:" + actionExecutedContext.Exception.GetBaseException().Message +
":BaseStackTrace:" + actionExecutedContext.Exception.GetBaseException().StackTrace
);
//Log Exception
//Utility.Logger.log.Error(actionExecutedContext.Exception.GetType().ToString() + ":" + actionExecutedContext.Exception.Message + ":" + actionExecutedContext.Exception.StackTrace + ":" + actionExecutedContext.Exception.StackTrace);
base.OnException(actionExecutedContext);
}
private string GetBodyFromRequest(HttpActionExecutedContext context)
{
string data;
using (var stream = context.Request.Content.ReadAsStreamAsync().Result)
{
if (stream.CanSeek)
{
stream.Position = 0;
}
data = context.Request.Content.ReadAsStringAsync().Result;
}
return data;
}
{
public override void OnException(HttpActionExecutedContext actionExecutedContext)
{
Utility.Logger.log.Error(
"Type:" + actionExecutedContext.Exception.GetType().ToString() +
":Url:" + actionExecutedContext.Request.RequestUri +
":Body:" + GetBodyFromRequest(actionExecutedContext) +
//":Message:" + actionExecutedContext.Exception.Message +
//":StackTrace:" + actionExecutedContext.Exception.StackTrace +
":BaseMessage:" + actionExecutedContext.Exception.GetBaseException().Message +
":BaseStackTrace:" + actionExecutedContext.Exception.GetBaseException().StackTrace
);
//Log Exception
//Utility.Logger.log.Error(actionExecutedContext.Exception.GetType().ToString() + ":" + actionExecutedContext.Exception.Message + ":" + actionExecutedContext.Exception.StackTrace + ":" + actionExecutedContext.Exception.StackTrace);
base.OnException(actionExecutedContext);
}
private string GetBodyFromRequest(HttpActionExecutedContext context)
{
string data;
using (var stream = context.Request.Content.ReadAsStreamAsync().Result)
{
if (stream.CanSeek)
{
stream.Position = 0;
}
data = context.Request.Content.ReadAsStringAsync().Result;
}
return data;
}
}
public class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Filters.Add(new JgoExceptionFilterAttribute());