【问题标题】:WebApi application on Azure returning 500 errors for some endpointsAzure 上的 Web Api 应用程序为某些端点返回 500 错误
【发布时间】:2015-12-15 17:09:33
【问题描述】:

我正在设置一个在 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 服务器日志中发现的唯一内容是 Failed Requests 日志中的以下警告:

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

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

【问题讨论】:

  • 不要挂钩 global.asax Application_Error,而是尝试挂钩 Web API 2.0 ExceptionHandler 或 ExceptionLogger 接口。不要为 ExceptionFilterAttribute 烦恼。本文解释了所有三个:ruhul.wordpress.com/2014/09/05/…

标签: azure asp.net-web-api2


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    此外,您可以使用网络应用设置启用更好的诊断日志。有关如何执行此操作的信息在这里:https://azure.microsoft.com/en-us/documentation/articles/web-sites-configure/ 在“启用诊断日志”部分下。

    另外,正如 Brent 所说,URL 冲突可能会导致一些不明显的严重错误。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-26
        • 2017-11-22
        • 1970-01-01
        • 2021-10-17
        • 1970-01-01
        • 1970-01-01
        • 2018-06-12
        • 1970-01-01
        相关资源
        最近更新 更多