Application_Error VS OnException 遇到的坑

在工作中遇到一个巨坑,就是关于Application_Error和OnException,
     
     本身我的应用程序设置了全局异常OnException处理,手动抛出异常,OnException正常捕捉,但有一次我将一个方法,修改了一下,
 
 
结果就诡异了,请求返回状态码一直是500,但是异常并未捕捉到,百思不得其姐,然后就跟踪方法执行过程,发现我的业务代码正常执行并且返回,但是接收返回的状态还是500,然后就在Globle中使用Application_Error捕捉异常,竟然真的捕捉到了,
 
 
 
这样子才发现问题,但是还不明白为什么OnException捕捉不到呢?
 
 
请高手留下宝贵意见!谢谢。
 
 
 
 

转载于:https://www.cnblogs.com/simoncai/p/6259601.html

ASP.NET中全局处理异常的方式主要有三种: 1. **Web.config配置文件中的`<customErrors>`元素**:这是最常见的一种处理方式。你可以在这里设置错误模式(如显示详细信息、显示消息等),并自定义错误页模板。当应用程序发生未被捕获的异常时,ASP.NET将根据这个配置来呈现错误页面。 ```xml <configuration> <system.web> <customErrors mode="Off" defaultRedirect="~/ErrorPages/Error.cshtml"> <error statusCode="404" redirect="~/ErrorPages/PageNotFound.cshtml" /> </customErrors> </system.web> </configuration> ``` 2. **Global.asax.cs中的`Application_Error`事件**:这是一个ASP.NET生命周期的一部分,在整个应用程序运行期间都会捕获所有的未经处理的HTTP错误。在这个方法中,你可以获取到引发错误的信息,并进行相应的响应。 ```csharp protected void Application_Error(object sender, EventArgs e) { Exception ex = Server.GetLastError(); // ...记录错误日志或展示用户友好的错误页面 } ``` 3. **自定义错误处理器**:如果你希望有更高级别的控制,比如基于异常类型的差异化处理,你可以创建一个自定义错误处理器类,通过`IExceptionFilter`接口来实现。这样可以根据具体的异常类型定制错误处理策略。 ```csharp public class CustomExceptionHandler : ExceptionFilterAttribute { public override void OnException(ExceptionContext context) { // 根据异常类型做不同的处理... } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值