Задать вопрос
@qwead

Net CORE обработка ошибок?

Есть две HTML-странички с инофрмацией об ошибках: wwwroot/errors/404.html и wwwroot/errors/500.html

Пытался настроить обработку ошибок таким способом:
//Startup.cs
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            app.Use(async (context, next) => {
                await next();
                
                if (context.Response.StatusCode == 404)
                {
                    // если URL является валидным для frontend, то перенаправляем на index.html
                    if (IsFrontEndRoute(context.Request.Path.Value))
                    {
                        context.Request.Path = "/index.html";
                        await next();
                    }
                    else
                    {
                        context.Response.ContentType = "text/html";
                        await context.Response.SendFileAsync("wwwroot/errors/404.html");
                    }
                }
            });
            
            app.UseDefaultFiles();
            app.UseStaticFiles();
            
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/error");
            }
 
            app.UseMvc();
        }

// Controllers/HomeController.cs
    public class HomeController : Controller
    {
        [Route("error")]
        [HttpGet]
        public async void Get()
        {
            await Response.SendFileAsync("./wwwroot/errors/500.html");
        }
    }


Но меня смущает что страница с 404 ошибкой возвращается с помощью context.Response.SendFileAsync,
а 500 ошибка вообще через отдельный контроллер.

Подскажите, пожалуйста, как можно привести это в нормальный вид?
  • Вопрос задан
  • 278 просмотров
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы