【发布时间】:2012-05-18 14:22:26
【问题描述】:
我有以下异常过滤器:
public class ServiceLayerExceptionFilter : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext context)
{
if (context.Result == null)
{
context.Result = new HttpResponseMessage();
}
context.Result.StatusCode = context.Exception.ConvertToHttpStatus();
base.OnException(context);
}
}
我的 ConvertToHttpStatus() 只是一个扩展,它查找映射到 HttpStatusCodes 的异常类型的 Dictionary 对象。 http 状态码正在正确转换。但是在响应负载中,我得到一个 IIS 错误页面。最好我想让响应为空,或者更好地将异常消息作为 json 传递。有谁知道我为什么返回 IIS 错误页面以及如何返回空内容或有效内容?
【问题讨论】:
-
Accept标头是什么?是beta还是nightly build? -
它是使用 NuGet 包的 beta 版本。请求中的接受标头为:Accept:*/*
-
那么问题出在哪里?您正在接受所有内容,系统会向您发送 HTML。使用
accept:application/json应该会向您发送 JSON 响应。 -
在过滤器中添加了这一行:context.Result.Headers.Add("Accept","application/json");但这没有效果。仍然在响应负载中从 IIS 获取堆栈跟踪...不确定这是否是错误。
标签: asp.net asp.net-mvc asp.net-web-api