【问题标题】:ASP.NET Core 2.2 App Service hosted on Azure returning 500 without an exception being thrown托管在 Azure 上的 ASP.NET Core 2.2 应用服务返回 500 且未引发异常
【发布时间】:2020-01-13 13:24:55
【问题描述】:

我使用ASP.NET Core 2.2 开发了一个App Service 后端托管在Azure 上。 有时我会收到500 status,但我无法找出生成 500 的位置。

我正在使用 application Insights,我在 Failed Requests 上看到有时对我的应用服务的一些调用返回 500。

如果我使用 Postman 以相同的值重现相同的调用,我不会收到任何 500。还有一些终端客户端应用程序向此后端发出请求。我相信这发生在他们身上,但是如果我使用相同的值执行相同的请求,为什么我无法重现相同的结果。

我知道 500 意味着“内部服务器错误”并且它与应用程序代码有关,但我什至将我的应用服务配置为使用 全局错误处理,但我从未得到 500当我执行在 Application Insights 上看到的相同请求时。

我在 StartUpp 类的 Configure 上设置了全局错误处理(只是为了向您展示我也启用了该功能)

app.UseExceptionHandler(config => ExceptionHandlingSettings.ConfigureGlobalExcpetionHandling(config));

我想知道在哪里或如何获取更多信息,以便找出产生错误/异常的代码,因为我猜我的代码中有一些错误会引发未处理的异常。

【问题讨论】:

    标签: c# azure asp.net-core-2.2


    【解决方案1】:

    您可以通过以下几个步骤来了解根本原因:

    1- 将 stdoutLogEnabled="false" 更改为 true,然后检查 stdoutLogFile=".\logs\stdout" 处的日志。那里的错误可能会告诉你一些事情。

    ASP.NET Core 模块标准输出日志经常记录在应用程序事件日志中找不到的有用错误消息。要启用和查看标准输出日志:

    • 导航到 Azure 门户中的诊断和解决问题边栏选项卡。
    • 在 SELECT PROBLEM CATEGORY 下,选择 Web App Down 按钮。
    • 在 Suggested Solutions > Enable Stdout Log Redirection 下,选择 Open Kudu Console 按钮以编辑 Web.Config。
    • 在 Kudu 诊断控制台中,打开路径站点 > wwwroot 的文件夹。向下滚动以显示列表底部的 web.config 文件。
    • 点击 web.config 文件旁边的铅笔图标。
    • 将 stdoutLogEnabled 设置为 true,并将 stdoutLogFile 路径更改为:\?\%home%\LogFiles\stdout。
    • 选择保存以保存更新的 web.config 文件。
    • 向应用发出请求。
    • 返回 Azure 门户。在开发工具区域中选择高级工具边栏选项卡。选择前往→ 按钮。 Kudu 控制台在新的浏览器选项卡或窗口中打开。
    • 使用页面顶部的导航栏,打开调试控制台并选择 CMD。
    • 选择 LogFiles 文件夹。
    • 检查 Modified 列并选择铅笔图标以使用最新的修改日期编辑 stdout 日志。
    • 当日志文件打开时,会显示错误。

    检查完成后,请确保删除日志记录。

    2 - 使用中间件处理错误请求,例如 app.UseDeveloperExceptionPage();

    3- 您可以在您的应用中添加 application Insight 并尝试放置 Info logging 以了解您的代码的哪一部分导致了失败。

    如需更多参考,请查看以下文档:

    https://docs.microsoft.com/en-us/aspnet/core/test/troubleshoot-azure-iis?view=aspnetcore-3.0

    https://docs.microsoft.com/en-us/azure/azure-monitor/app/asp-net-exceptions

    希望对你有帮助。

    【讨论】:

    • 非常感谢您的回答。关于 point #2,我已经在使用它,但正如我所说,这些错误时常发生,所以我无法通过 UseDeveloperExceptionPage 看到它i> 关于第 3 点,正如我的问题所说“我正在使用 application Insights”。这就是我发现那些 '500' 关于 point #1 的原因,我相信它可能真的很有帮助,但是每当我编辑 web.config 时,我都会收到以下错误:409 Conflict: Could not write to local resource 'D:\home\site\wwwroot\web.config' due to error 'Access to the path is denied
    猜你喜欢
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    • 2020-04-08
    • 2020-09-07
    • 2019-03-30
    • 2018-08-20
    • 2020-12-06
    相关资源
    最近更新 更多