ASP.NET Core - используйте как UseDeveloperExceptionPage (), так и настраиваемое ведение журнала. - PullRequest
2 голосов
/ 05 апреля 2019

В моем приложении ASP.NET Core есть следующий код для обработки ошибок:

        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler(builder =>
            {
                builder.Run(async context =>
                {
                    context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
                    var loggingService = context.RequestServices.GetService<ILoggingService>();
                    var exceptionFeature = context.Features.Get<IExceptionHandlerFeature>();
                    if (exceptionFeature != null)
                    {
                        Exception ex = exceptionFeature.Error;
                        Console.Error.WriteLine(ex.Message + "   " + ex.StackTrace);
                        loggingService.Error(ex);
                    }
                });
        }

Однако, когда я нахожусь в среде Development, я бы хотел использовать UseDeveloperExceptionPage() инастраиваемая обработка ошибок для регистрации в БД.Но похоже, что это не работает (UseExceptionHandler() отключает функциональность UseDeveloperExceptionPage()).

Есть ли способ достичь этого без написания UseDeveloperExceptionPage() кода формы нуля?

1 Ответ

1 голос
/ 08 апреля 2019

Для встроенного UseDeveloperExceptionPage, он не предоставил никакого метода расширения для настройки процесса ошибки, вы можете попробовать реализовать свое промежуточное программное обеспечение для регистрации ошибки, например

if (env.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
};
app.Use(async (context, next) =>
{
    try
    {
        await next.Invoke();
    }
    catch (Exception ex)
    {
        //var loggingService = context.RequestServices.GetService<ILoggingService>();
        //loggingService.Error(ex);
        Console.Error.WriteLine(ex.Message + " My " + ex.StackTrace);
        throw;
    }

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...