C# 在ASP.NETWebAPI(global.asax)中全局处理所有异常
我目前正在使用C# 在ASP.NETWebAPI(global.asax)中全局处理所有异常,c#,asp.net,exception,asp.net-web-api,exception-handling,C#,Asp.net,Exception,Asp.net Web Api,Exception Handling,我目前正在使用global.asax中的Application\u Error来处理Web API异常,将它们传递给错误记录器并记录它们 void Application_Error(object sender, EventArgs e) { if (Server.GetLastError() != null) { exceptionController.Log(Server.GetLastError());
global.asax
中的Application\u Error
来处理Web API异常,将它们传递给错误记录器并记录它们
void Application_Error(object sender, EventArgs e)
{
if (Server.GetLastError() != null)
{
exceptionController.Log(Server.GetLastError());
Server.ClearError();
}
}
它捕获了一些异常,但不是所有异常——例如来自服务器的404错误,等等。我自己如何捕获更多异常(我假设这意味着覆盖ASP.Net的默认异常处理)。是否有一种方法可以从global.asax
完成这一切,或者还有其他方法?我希望在所有控制器上避免try catch finally
块
Mods——关于这一点有一百万条线索,但在许多不同时期也有一百万个同样独特的答案。我非常困惑,以至于我不得不在2018年再次提问。如果您想处理框架中的404,您可以添加一条路径来处理“其他一切”,并返回定制的响应 我们在路线表的末尾有一条全包路线,看起来有点像
config.Routes.MapHttpRoute(
name: "NotImplemented",
routeTemplate: "{*data}",
defaults: new { controller = "Error", action = "notimplemented", data = UrlParameter.Optional });
我们在其中生成自定义响应。您可能可以在路由表中执行类似的操作。请看我在这里给出的答案。您的一些错误并非来自应用程序,如“地址未找到”。你必须在客户端处理,如果你有控制权的话。对于大多数问题,请在end@Nkosi谢谢你的回答。但是你链接的“ASP.NETWebAPI2中的全局错误处理”一文——我相信——已经过时了。您发布的方式很精简,但仍然需要在所有控制器上添加属性。在2018年,是否有一种方法可以让我的控制器不必添加任何逻辑——只需拥有一个全局异常类,该类覆盖默认异常处理,并为任何类型的异常发送异常消息、发送电子邮件等?我真的很难做到这一点——有太多的方法可以做到这一点,而微软似乎并没有很好地记录这一点