.NET Core UseExceptionHandler DI

时间:2018-10-31 05:34:18

标签: .net startup core custom-error-handling

在Startup.ConfigureServices期间,我将自定义错误日志记录和报告服务注入到我的服务集合中。

services.AddTransient<IErrorService, ErrorService>();

然后我在Startup.Configure中添加一个全局错误陷阱。

app.UseExceptionHandler("/Home/Error");

然后在Home.Error中,我有用于ErrorService的DI,并且将其传递给上下文,并且一切正常。

现在,我想知道是否有某种方式可以消除与Home.Error的链接,而只是在Configure中直接调用我的ErrorService?但是我现在还无法确定如何在Startup中链接到ErrorService。请注意,我注入的其他两个服务是我的EmailService和我的ProgramSettings。我在ErrorService中都需要它们,因此我确实需要以连接标准.NET Core DI的方式调用ErrorService。

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseExceptionHandler(a => {
            a.Run(ctx => {
                var exceptionFeature = ctx.Features.Get<IExceptionHandlerPathFeature>();

                     ... execute ErrorService here somehow????????

                ctx.Response.StatusCode = StatusCodes.Status500InternalServerError;
                return Task.CompletedTask;
            });
        });

0 个答案:

没有答案