Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NETWebAPI(global.asax)中全局处理所有异常_C#_Asp.net_Exception_Asp.net Web Api_Exception Handling - Fatal编程技术网

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年,是否有一种方法可以让我的控制器不必添加任何逻辑——只需拥有一个全局异常类,该类覆盖默认异常处理,并为任何类型的异常发送异常消息、发送电子邮件等?我真的很难做到这一点——有太多的方法可以做到这一点,而微软似乎并没有很好地记录这一点