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