我创建了一个自定义对象,用于为所有错误生成json错误响应。我遇到的问题是有一些我无法捕获的错误。例如,如果我尝试调用不支持GET的操作,则默认响应为
{" Message":"请求的资源不支持http方法 ' GET'"}
这很好,但我想控制格式。我想控制这样的每一个自动错误,所以我可以确保没有任何东西得到输出,我不想输出。我需要能够优雅地让客户知道是否发生代码异常。
我发现了这个,这似乎是我正在寻找的东西,但它似乎没有抓住错误,因为没有匹配的动作。 How to override all standard error pages in WebAPI
我试图实现这个,但即使我在主控制器中有这个,我仍然从上面得到相同的错误信息。
[AllowAnonymous]
[ActionName("405")]
[HttpGet]
public string Status405()
{
return "error";
}
我希望会有一个错误的事件或什么东西可以作为一个捕获所有,所以我可以覆盖一切。我尝试基于HttpResponseEx
工作public class ErrorFilter : System.Web.Http.HttpResponseException
{
public override string Message
{
get
{
return "My custom response based on whatever params are in this error";
}
}
}
这也不起作用,我可以看到为什么因为它没有触及任何被触发的事件。
当然有办法做到这一点。通常如何完成?
答案 0 :(得分:0)
在web.config中,您需要打开自定义错误。默认情况下,它设置为remote,这允许开发人员查看堆栈跟踪,最终用户可以看到一个不错的错误页面。您想将此设置为开。有关详细信息,请参阅此处https://msdn.microsoft.com/en-us/library/h0hfz6fc(v=vs.85).aspx