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

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".





Comentários

Postagens mais visitadas deste blog

Selenium + Firefox = The type initializer for 'System.IO.Compression.ZipStorer' threw an exception

Transmissor sem fio bluetooth Tomate MTB-803 e manual