Gestão de erros Asp.net Núcleo

votos
14

Nas versões anteriores Asp.net I foi usada para criar um BaseController herdada dos outros controladores e não interceptar o erro geral e registrando cada erro com um método de registro simples e passar a ExceptionContext filterContext .

Devo fazer o mesmo em Asp.net 5? Eu vejo em Startup.cs que há uma declaração if / else que, basicamente, separar a condição de depuração / live, com a linha

app.UseErrorHandler(/Home/Error);     

para um aplicativo de produção. Como eu deveria ligar no processo e registrar os erros?

obrigado

Publicado 16/11/2014 em 13:33
fonte usuário
Em outras línguas...                            


1 respostas

votos
17

Manuseio e registro erros no ASP.NET 5 envolve alguns elementos.

Para lidar com o erro em um cenário de produção e mostrar uma página de erro, o app.UseExceptionHandler()método é o caminho a percorrer. O repo Diagnostics na org ASP.NET GitHub inclui uma amostra que mostra esta. Para cenários em tempo de desenvolvimento em que você quer ver um rastreamento de pilha completo e outras informações de diagnóstico, use app.UseDeveloperExceptionPage()como visto em esta amostra .

Se o aplicativo estiver usando MVC 6, então há uma maneira específica de MVC de tratamento de erros, tanto quanto havia em versões anteriores do MVC. Em MVC 6 um filtro (ou o próprio controlador, o qual também é um filtro) pode manipular / substituir o OnActionExecutedmétodo e inspeccionar o ActionExecutedContextparâmetro para tentar manipular o erro.

Quando se trata de exploração madeireira, há uma nova infra-estrutura de registro em ASP.NET 5, que relata uma grande quantidade de informações a qualquer registrada ILogger. Os modelos de projeto padrão no Visual Studio 2015 registar alguns madeireiros que os erros (e outros dados) para o console ea janela de saída de depuração do VS log. No entanto, quando executado no IIS ou o IIS Express não há nenhuma janela de console (ainda!). Mas se você executar a partir da linha de comando (usando dnx web), então você vai ver o erro. Ou, é claro, você pode registrar um registrador diferente que grava em um arquivo de log ou banco de dados e ver os logs lá.

Para registrar um personalizado ILoggerem um aplicativo web:

  1. Escrever um logger que implementa a ILoggerinterface. Veja as implementações DNX para como fazer isso.
  2. Adicionar um parâmetro do tipo ILoggerFactorya do seu aplicativo Startupde classe Configuremétodo.
  3. Na Configurechamada de método loggerFactory.AddProvider(<some provider>)e passar uma instância de sua logger.
Respondeu 16/11/2014 em 20:10
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more