Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

626
Visualizações
Visualización de una página 404 no encontrada para ASP.NET Core MVC

Estoy usando el software intermedio a continuación para configurar páginas de error para los códigos de estado HTTP 400 a 599. Entonces, visitar /error/400 muestra una página de error 400 Bad Request.

 application.UseStatusCodePagesWithReExecute("/error/{0}"); [Route("[controller]")] public class ErrorController : Controller { [HttpGet("{statusCode}")] public IActionResult Error(int statusCode) { this.Response.StatusCode = statusCode; return this.View(statusCode); } }

Sin embargo, visitar /this-page-does-not-exist da como resultado una página de error genérica de IIS 404 No encontrado.

¿Hay alguna manera de manejar las solicitudes que no coinciden con ninguna ruta? ¿Cómo puedo manejar este tipo de solicitud antes de que IIS se haga cargo? Idealmente, me gustaría reenviar la solicitud a /error/404 para que mi controlador de errores pueda manejarla.

En ASP.NET 4.6 MVC 5, teníamos que usar la sección httpErrors en el archivo Web.config para hacer esto.

 <?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <httpErrors errorMode="Custom" existingResponse="Replace"> <remove statusCode="404" /> <error statusCode="404" responseMode="ExecuteURL" path="/error/404/" /> </httpErrors> </system.webServer> </configuration>
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Uno de los mejores tutoriales que encontré es este: https://joonasw.net/view/custom-error-pages

El resumen está aquí:

1. Primero agregue un controlador como ErrorController y luego agregue esta acción:

 [Route("404")] public IActionResult PageNotFound() { string originalPath = "unknown"; if (HttpContext.Items.ContainsKey("originalPath")) { originalPath = HttpContext.Items["originalPath"] as string; } return View(); }

Nota: Puede agregar la acción a otro controlador existente como HomeController .

2. Ahora agregue la vista PageNotFound.cshtml . Algo como esto:

 @{ ViewBag.Title = "404"; } <h1>404 - Page not found</h1> <p>Oops, better check that URL.</p>

3. Y lo importante está aquí. Agrega este código a la clase Startup , dentro del método Configure :

 app.Use(async (ctx, next) => { await next(); if(ctx.Response.StatusCode == 404 && !ctx.Response.HasStarted) { //Re-execute the request so the user gets the error page string originalPath = ctx.Request.Path.Value; ctx.Items["originalPath"] = originalPath; ctx.Request.Path = "/error/404"; await next(); } });

Tenga en cuenta que debe agregarse antes de las configuraciones de enrutamiento como app.UseEndpoints... .

over 4 years ago · Santiago Trujillo Relatório

0

Según este elemento SO , IIS obtiene el 404 (y, por lo tanto, lo maneja) antes de que llegue a UseStatusCodePagesWithReExecute .

¿Has probado esto: https://github.com/aspnet/Diagnostics/issues/144 ? Sugiere finalizar la solicitud que recibió un 404 para que no vaya a IIS para su manejo. Y aquí está el código para agregar a su Inicio para hacerlo:

 app.Run(context => { context.Response.StatusCode = 404; return Task.FromResult(0); });

Esto parece ser un problema exclusivo de IIS.

over 4 years ago · Santiago Trujillo Relatório

0

Puede usar el respaldo en EndPoint en asp.net core como a continuación (dentro de app.UseEndpoints) y con páginas de afeitar (NotFound es una página de afeitar en la carpeta Páginas en lugar del controlador)

 endpoints.MapRazorPages(); endpoints.MapFallback( context => { context.Response.Redirect("/NotFound"); return Task.CompletedTask; });
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda