.NET 8微服务IExceptionHandler中间件未触发问题排查
问题排查与修复
你的IExceptionHandler未被调用的核心问题是中间件顺序错误,同时存在两处潜在配置缺失,具体修复方案如下:
1. 调整中间件注册顺序
异常处理中间件需要尽可能早注册,才能捕获后续路由、控制器等中间件抛出的异常。修改Configure方法的中间件顺序:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { #region Routing & Middleware // 优先注册异常处理中间件 app.UseExceptionHandler(); app.UseRouting(); // 必须添加端点映射,否则控制器无法处理请求 app.MapControllers(); #endregion }
2. 验证自定义扩展方法的有效性
代码中调用的exception.GetStatusCode()是自定义扩展方法,需确保它:
- 能正确处理所有异常类型,返回合法的HTTP状态码(如
500、400) - 自身不会抛出异常,否则会导致
TryHandleAsync执行失败,框架会 fallback 到默认异常处理逻辑
3. 排查其他异常拦截逻辑
检查是否存在提前捕获异常的逻辑:
- 控制器中是否手动捕获异常并直接返回响应
- 是否注册了全局异常过滤器或其他冲突的异常处理中间件
内容的提问来源于stack exchange,提问作者HWS-SLS
相关产品推荐
相关产品推荐

