Szukaj…


Przekieruj na niestandardową stronę błędu

ASP.NET Core zapewnia oprogramowanie pośredniczące stron kodowych statusu , które obsługuje kilka różnych metod rozszerzeń, ale interesują nas UseStatusCodePages i UseStatusCodePagesWithRedirects :

  • UseStatusCodePages dodaje oprogramowanie pośrednie StatusCodePages z podanymi opcjami, które sprawdzają odpowiedzi o kodach statusu między 400 a 599, które nie mają treści. Przykład zastosowania przekierowania:

    app.UseStatusCodePages(async context => {
      //context.HttpContext.Response.StatusCode contains the status code
    
      // your redirect logic
    
    });
    
  • UseStatusCodePagesWithRedirects dodaje oprogramowanie pośrednie StatusCodePages do potoku. Określa, że odpowiedzi powinny być obsługiwane przez przekierowanie z danym szablonem adresu URL lokalizacji. Może to obejmować symbol zastępczy „{0}” dla kodu stanu. Adresy URL zaczynające się od „~” będą poprzedzone PathBase, przy czym każdy inny adres URL będzie używany tak jak jest. Na przykład następujące przekieruje do ~ / error / <error_code> (na przykład ~ / error / 403 dla błędu 403):

    app.UseStatusCodePagesWithRedirects("~/errors/{0}");
    

Globalna obsługa wyjątków w programie ASP.NET Core

UseExceptionHandler może być używany do globalnej obsługi wyjątków. Możesz uzyskać wszystkie szczegóły obiektu wyjątku, takie jak Ślad stosu, Wyjątek wewnętrzny i inne. A potem możesz pokazać je na ekranie. Możesz łatwo wdrożyć w ten sposób.

app.UseExceptionHandler(
 options => {
    options.Run(
    async context =>
    {
      context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
      context.Response.ContentType = "text/html";
      var ex = context.Features.Get<IExceptionHandlerFeature>();
      if (ex != null)
      {
        var err = $"<h1>Error: {ex.Error.Message}</h1>{ex.Error.StackTrace }";
        await context.Response.WriteAsync(err).ConfigureAwait(false);
      }
    });
 }
);

Musisz umieścić to w pliku config () pliku startup.cs.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow