Есть две 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 ошибка вообще через отдельный контроллер.
Подскажите, пожалуйста, как можно привести это в нормальный вид?