Azure上的WebApi应用程序为某些端点返回500个错误

时间:2015-12-15 17:09:34

标签: azure asp.net-web-api2

我正在设置在Azure Web应用程序环境中运行的ASP.NET WebApi应用程序。我的大多数控制器和端点工作正常,但大约有10条路由返回500个错误"发生错误"。它不是随机的。它每次都是相同的路由,我找不到任何模式(不是所有的HTTP方法,来自不同的控制器,同一控制器中的其他路由工作正常,等等)

发生这些错误时,就我在应用程序中所知,没有错误记录被触发。 (如果重要,我正在使用Raygun.IO)。我尝试在Application_Error函数中添加一个带有以下行的global.asax文件:

Exception ex = Server.GetLastError();
new RaygunClient().SendInBackground(null, ex);

但据我所知,当发生这500个错误时,它不会被触发。我在Azure服务器日志中找到的唯一内容是“失败的请求日志”中的以下警告:

enter image description here

但是,在此之前我没有看到跟踪中的任何错误。我也没有在我的任何Azure日志中发现任何与这些失败路由相关的错误。

它的.NET 4.6(尝试4.5.1和4.5.2没有区别)WebApi使用OWIN启动类。还尝试更新我的所有包都没有效果。

3 个答案:

答案 0 :(得分:0)

检查以确保您没有发生冲突的路线。当URI匹配两个或更多控制器操作,因此Web API无法选择一个时,您将收到500错误。

答案 1 :(得分:0)

如果您有一致的repro,那么您可以使用远程调试附加到您的Web应用程序并进行调试(https://azure.microsoft.com/en-us/documentation/articles/web-sites-dotnet-troubleshoot-visual-studio/)。如果您可以通过浏览器进行重新调整,则还可以关闭自定义错误页面,以便通过浏览器显示堆栈跟踪(<customErrors mode="off"/>下的<server.web>)。

此外,您可以使用Web应用程序设置启用更好的诊断日志。有关如何操作的信息,请参阅:https://azure.microsoft.com/en-us/documentation/articles/web-sites-configure/在“#34;启用诊断日志&#34;”部分下。

此外,正如布伦特所说,网址冲突可能会导致一些令人讨厌的错误,这些错误并不是很明显。

答案 2 :(得分:0)

我弄清楚发生了什么事。发生了实际错误(主要是SQL相关的),但是我们在这些函数中配置函数和错误日志记录的方式,实际错误被吞没和丢失,从而覆盖了Raygun的错误记录行为。我通过并删除了我们用于错误捕获和日志记录的Try / Catch块,真正的错误最终出现在Raygun仪表板中。