小编And*_*w S的帖子

异常处理中间件和页面

我是中间件概念的新手,我目前正在努力处理我的MVC Core项目中的异常.

我想要发生的是捕获,记录异常,然后将用户发送到带有消息的友好错误页面.起初,我试图在中间件中管理所有这些,但意识到我可能没有正确地做到这一点.

因此,如果我希望这个流程发生,我应该使用我的异常日志记录中间件和app.UseExceptionHandler("/ Error"),以便中间件重新抛出异常到页面?如果是这样,我如何在错误页面中获取异常详细信息?我想先截取的异常处理机制应该是Configure中的最后一个,这是正确的吗?

我发现的所有示例都严格处理HTTP状态代码错误,如404; 我正在寻找处理实际的异常(及其子类).这样,在我的View页面中,我可以在适用的情况下抛出自己的异常(例如,如果为必填字段提供了一个null.)

Startup.cs片段:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, 
                      ILoggerFactory loggerFactory, LoanDbContext context) {
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();

    app.UseStatusCodePages();
    if (env.IsDevelopment() || env.IsEnvironment("qa")) {
        app.UseDeveloperExceptionPage();
        app.UseBrowserLink();
    } else {
        app.UseExceptionHandler("/Error");
    }
    app.UseMiddleware<MyExceptionHandler>(loggerFactory);
    // ... rest of Configure is irrelevant to this issue
Run Code Online (Sandbox Code Playgroud)

MyExceptionHandler.cs

using Microsoft.AspNetCore.Http;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using System;
using System.Data.SqlClient;
using System.Threading.Tasks;

namespace MyCompany.MyProject.Helpers
{
    /// <summary>
    /// A custom Exception Handler Middleware which can be re-used in other projects.
    /// </summary>
    public sealed …
Run Code Online (Sandbox Code Playgroud)

c# exception-handling asp.net-core-mvc asp.net-core asp.net-core-middleware

7
推荐指数
1
解决办法
5000
查看次数