Я внедряю пользовательскую службу регистрации ошибок и отчетов в мою коллекцию служб во время запуска. ConfigureServices.
services.AddTransient<IErrorService, ErrorService>();
Затем я добавляю глобальную ловушку ошибок в Startup.Configure.
app.UseExceptionHandler("/Home/Error");
Затем в Home.Error у меня есть мой DI для ErrorService, и я передаю ему свой контекст, и все работает отлично.
Теперь мне интересно, есть ли какой-нибудь способ устранить связь с Home.Error, и просто вызвать мою службу ErrorService прямо в Configure? Но я не могу понять, как получить связь с ErrorService на этом этапе запуска. Обратите внимание, что двумя другими сервисами, которые я внедряю, являются мой EmailService и мой ProgramSettings. Мне нужны оба из них в ErrorService, поэтому мне нужно, чтобы ErrorService вызывался таким образом, чтобы подключался стандартный .NET Core DI.
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;
});
});