Hoje tentei debugar um serviço Web API que fiz deploy para um servidor remoto. O serviço estava retornando um erro http 500, sem os detalhes da exception.
A primeira coisa que tentei foi desabilitar os Custom erros no web.config:
...porém isso não mudou nada. Depois de pesquisar bastante eu percebi que o Web API usa uma configuração diferente para detalhar os erros das exceptions.
A diferença na configuração é porque o CustomErros do web.config é algo que o ASP.Net usa para determinar se aquela tela de erro amarela deve ou não exibir os detalhes da exception. Já o Web API configura se os detalhes de HttpError serão serializados.
Apesar disso, algo que percebi é que eu não deveria estar tendo toda esta dor de cabeça, pois segundo o MSDN...
Resultado final:
Outras informações @ Per Request Error details policy in ASP.Net Web API.
HTTP/1.1 500 Internal Server Error
Content-Length: 89
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/8.0
X-Powered-By: ASP.NET
Date: Thu, 15 Jan 2015 17:03:10 GMT
{
"$type":"System.Web.Http.HttpError, System.Web.Http",
"Message":"An error has occurred."
}
A primeira coisa que tentei foi desabilitar os Custom erros no web.config:
<customErrors mode="Off" />
...porém isso não mudou nada. Depois de pesquisar bastante eu percebi que o Web API usa uma configuração diferente para detalhar os erros das exceptions.
GlobalConfiguration.Configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
A diferença na configuração é porque o CustomErros do web.config é algo que o ASP.Net usa para determinar se aquela tela de erro amarela deve ou não exibir os detalhes da exception. Já o Web API configura se os detalhes de HttpError serão serializados.
Apesar disso, algo que percebi é que eu não deveria estar tendo toda esta dor de cabeça, pois segundo o MSDN...
Use the default behavior for the host environment. For ASP.NET hosting, use the value from the customErrors element in the Web.config file. For self-hosting, use the value LocalOnly.... assim ainda tem alguma peça que não está encaixando. Mais tarde eu procuro saber o porquê.
(http://msdn.microsoft.com/en-us/library/system.web.http.includeerrordetailpolicy(v=vs.118).aspx)
Resultado final:
HTTP/1.1 500 Internal Server Error
Content-Length: 0
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/8.0
X-Powered-By: ASP.NET
Date: Thu, 15 Jan 2015 19:44:04 GMT
{
"$type":"System.Web.Http.HttpError, System.Web.Http",
"Message":"An error has occurred.",
"ExceptionMessage":"...",
"ExceptionType":"...",
"StackTrace":"..."
}
Outras informações @ Per Request Error details policy in ASP.Net Web API.
Nenhum comentário:
Postar um comentário