Как настроить страницы ошибок по умолчанию в azure веб-приложении для linux? - PullRequest
0 голосов
/ 21 марта 2020

Я принимал. NET core 3.1.1 LTS-приложение в Azure веб-приложении для linux? Как настроить страницы ошибок по умолчанию, например 1. 502 2 Страницы ошибок, когда служба приложения остановлена. 3 Страница ошибки при публикации приложения из Visual studio, VS code / FTP

1 Ответ

0 голосов
/ 23 марта 2020

Я нашел документы о создании пользовательских страниц ошибок шлюза приложений, может быть, это полезно для вас. пользовательские страницы ошибок Как создать пользовательскую страницу ошибок в коде.

Мы также можем обрабатывать ее по коду. Вот мое предложение.

Ошибки, такие как 500, мы можем обработать с помощью фильтра ,

public class ErrorPageFilter : ActionFilterAttribute
{
    public override void OnResultExecuted(ResultExecutedContext context)
    {
        if (context.HttpContext.Response.StatusCode == 500)
        {
            context.HttpContext.Response.Redirect("error/500");
        }
        base.OnResultExecuted(context);
        }
}

[ErrorPageFilter]
public abstract class PageController
{}

Для проекта .netcore mvc, он также поставляется с конвейерной обработкой страниц ошибок при его создании.

В файле startup.cs,

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
        //dev env show error page
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            //prod env show custom page
            app.UseExceptionHandler("/Home/Error");
            app.UseHsts();
        }
}

//In HomeController has this function,
//You just replace cshtml file by you want
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore =     true)]
public IActionResult Error()
{
    return View(new ErrorViewModel { RequestId = Activity.Current?.Id ??     HttpContext.TraceIdentifier });
}

Ошибки типа 404, мы можем ,

В файле startup.cs найти функцию настройки, затем добавить следующий код,

  app.UseStatusCodePagesWithReExecute("/error/{0}");

Затем добавьте контроллер ошибок,

public class ErrorController : Controller
{
        /// <summary>
        /// In content in {0} is error code
        /// </summary>
        /// <returns></returns>
        [Route("/error/{0}")]
        public IActionResult Page()
        {
            //Jump to 404 error page
            if (Response.StatusCode == 404)
            {
                return View("/views/error/notfound.cshtml");
            }
            return View();
        }
}

Обратите внимание, если вы используете ErroeController (обработать ошибку 404), пожалуйста, не используйте app.UseExceptionHandler("/Home/Error"), вам просто нужно обработать ошибку в контроллер.

...