小编kil*_*tch的帖子

如何配置多个异常处理程序

我正在尝试将我的中间件管道配置为使用 2 个不同的异常处理程序来处理相同的异常。例如,我试图让我的自定义处理程序和内置的 DeveloperExceptionPageMiddleware 如下:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();                
        app.ConfigureCustomExceptionHandler();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");                               
        app.ConfigureCustomExceptionHandler();            
        app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseCookiePolicy();
    app.UseAuthentication();
    app.UseMvcWithDefaultRoute();
}
Run Code Online (Sandbox Code Playgroud)

我的目标是让自定义处理程序做自己的事情(日志记录、遥测等),然后将 (next()) 传递给其他显示页面的内置处理程序。我的自定义处理程序如下所示:

public static class ExceptionMiddlewareExtensions
{
    public static void ConfigureCustomExceptionHandler(this IApplicationBuilder app)
    {            
        app.UseExceptionHandler(appError =>
        {
            appError.Use(async (context, next) =>
            {                    
                var contextFeature = context.Features.Get<IExceptionHandlerFeature>();
                if (contextFeature != null)
                {
                    //log error / do custom stuff

                    await next();
                }
            });
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

我无法让 CustomExceptionHandler 将处理传递给下一个中间件。我得到以下页面:

404错误:

在此处输入图片说明

我尝试切换顺序,但随后开发人员异常页面接管并且未调用自定义异常处理程序。 …

c# asp.net-core asp.net-core-middleware

6
推荐指数
1
解决办法
1237
查看次数

标签 统计

asp.net-core ×1

asp.net-core-middleware ×1

c# ×1