我正在从事ASP.Net样板服务项目。我想发送一个自定义异常。我实现了
[AttributeUsage(AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
public sealed class FriendlyError : ExceptionFilterAttribute, IExceptionFilter
{
private readonly HttpStatusCode StatusCode;
public FriendlyError(HttpStatusCode statusCode = HttpStatusCode.InternalServerError)
{
StatusCode = statusCode;
}
public override void OnException(ExceptionContext context)
{
if (context.Exception == null) return;
context.HttpContext.Response.StatusCode = (int)StatusCode;
context.HttpContext.Response.ContentType = "multipart/form-data;application/json";
context.Result = new JsonResult(CreateErrorResult(context.Exception), new JsonSerializerSettings
{
Formatting = Formatting.Indented,
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
ContractResolver = new CamelCasePropertyNamesContractResolver()
});
base.OnException(context);
}
}处理异常,并将注释放在控制器端点上。但是它向客户端发送406条(不可接受的)消息。
发布于 2017-12-27 11:41:40
这并不少见,因为在和Accept-Language中定义的可接受值列表中返回了一个不可预期的错误,因此获得了错误Accept-Charset 406不能被接受。
有关更多详细信息,请参阅https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/406。
我认为你需要添加这样的东西:
context.HttpContext.Response.Charset = CharSet.Unicode;和
context.HttpContext.Response.ContentType应该根据响应类型来设置,每个请求的通用"multipart/form-data;application/json"可能不正确。
发布于 2017-12-28 06:33:29
JSON文本的MIME媒体类型是application/json。因此,更改内容类型。
Recommendation;
根据我的说法,您应该检查异常抛出操作的结果类型。如果总是发送json结果,则可能忽略其他返回类型。ABP有UserFriendlyException,它很整洁!你为什么不用它呢?
https://stackoverflow.com/questions/47986575
复制相似问题