Estou usando páginas ASP.NET Core Razor com identidade. Eu uso o middleware StatusCodePages da maneira padrão:
app.UseStatusCodePagesWithReExecute("/Error", "?statusCode={0}");
Nessa página do Razor, posso ativar o código de status para renderizar conteúdo diferente para 401, 403, 404 e "outros" (todos os outros códigos no intervalo 400..599). No entanto, isso fica confuso; Eu prefiro páginas separadas.
Então, em vez disso:
- /Páginas/Erro.cshtml
Eu quero isso:
- /Páginas/401.cshtml
- /Páginas/403.cshtml
- /Páginas/404.cshtml
- /Páginas/400_599.cshtml
Isso é possível?
Soluções alternativas feias que eu já conheço:
- Eu poderia usar o URL template
"/Error/{0}"
, mas isso é impraticável: eu teria que definir uma página separada para cada código no intervalo 400..599. Eu definitivamente não posso fazer isso. - Na classe de modelo de página "/Pages/Error.cshtml.cs", eu poderia redirecionar para páginas diferentes com base no código de status. Prefiro não fazer isso, suspeito que seja ruim para o SEO.
- Para o endpoint "/Error", eu poderia usar um controlador MVC com visualizações (em vez de Razor Pages); o método de ação pode retornar a visão apropriada. Não é uma solução ruim, mas acrescenta complexidade desnecessária; Eu prefiro uma abordagem Razor Pages.
Claro que pode, basta criar a página na
Pages
pasta abaixo:Em seguida, use
app.UseStatusCodePagesWithReExecute("/{0}")
em Program.cs:Para a página abrangente , você pode manter as páginas de erro como abaixo:
Programa.cs: