ASP.NET MVC - Retornando um erro 500 com mensagem (explicando quando ocorre status code = 0)

21/07/2016

Em desenvolvimento web podemos (devemos!) trabalhar com código protegido no lado do servidor (entre try...catch), para então - também - trabalharmos com mensagens amigáveis ao usuário, para isso para uma exceção gerada no servidor retornamos também a mensagem de erro tratada.

O exemplo abaixo é só um snippet no contexto MVC considerando método POST no Controller com retorno do tipo ActionResult:

‚ÄčEntão no bloco catch temos:

 

return new HttpStatusCodeResult(HttpStatusCode.InternalServerError, mensagem);  

Sendo que a variável mensagem tem o valor de "ERROR FORÇADO NO SERVIDOR".

Como resultado da chamada temos o seguinte retorno:

Tudo certo, mensagem retornada, status code = 500.

 

 

RESSALVA!!!

Em uma outra simulação.

 

return new HttpStatusCodeResult(HttpStatusCode.InternalServerError, mensagemMuitoGrande);

 

 

Digamos então que a variável mensagemMuitoGrande tenha um valor grande (não sei precisar o limite), pode ser um log mais completo do erro, não sei, qualquer conteúdo string que extrapole o limite.

 

Você então irá se deparar com um problema que está relacionado ao tamanho do response e com isso a interceptação da exceção gerada terá um status code = 0, ao invés de 500, e nada de mensagem retornada.

A informação mais completa no rastreamento da rede (fico devendo a imagem) exibe como "aborted", ou seja, o tal limite atingido faz com que o retorno do request seja "cancelado/abortado".