Azure上托管的ASP.NET Core 2.2 App Service返回500,没有引发异常

时间:2019-09-11 16:49:01

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

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

我正在使用application Insights,并且在失败的请求上看到,有时我的App服务有一些调用返回500。

如果我用邮递员用相同的值重现相同的呼叫,则不会得到500。这也有一些最终客户应用向此后端发出请求。我相信这正在发生在他们身上,但是如果我用相同的值执行相同的请求,为什么我不能重现相同的结果。

我知道500表示“内部服务器错误”,它与应用程序代码有关,但我甚至已将我的App Service配置为使用全局错误处理,但我从来没有得到500当我执行在Application Insights上看到的相同请求时。

我在 StartUpp 类的 Configure 上设置了全局错误处理(仅向您显示我也启用了该错误)

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

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

1 个答案:

答案 0 :(得分:0)

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

1-将stdoutLogEnabled =“ false”更改为true,然后检查stdoutLogFile =“。\ logs \ stdout”中的日志。那里的错误可能会告诉您一些情况。

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

  • 导航到Azure门户中的“诊断和解决问题”刀片。
  • 在“选择问题类别”下,选择“ Web App向下”按钮。
  • 在“建议的解决方案”>“启用标准输出日志重定向”下,选择“打开Kudu控制台”按钮以编辑Web.Config。
  • 在Kudu诊断控制台中,打开路径站点> wwwroot的文件夹。向下滚动以显示列表底部的web.config文件。
  • 单击web.config文件旁边的铅笔图标。
  • 将stdoutLogEnabled设置为true,并将stdoutLogFile路径更改为:\?\%home%\ LogFiles \ stdout。
  • 选择“保存”以保存更新的web.config文件。
  • 向应用发出请求。
  • 返回到Azure门户。在“开发工具”区域中选择“高级工具”刀片。选择执行→按钮。 Kudu控制台会在新的浏览器标签或窗口中打开。
  • 使用页面顶部的导航栏,打开“调试”控制台,然后选择“ CMD”。
  • 选择LogFiles文件夹。
  • 检查“已修改”列,然后选择铅笔图标以编辑具有最新修改日期的标准输出日志。
  • 打开日志文件时,显示错误。

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

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

3-您可以在应用程序中添加应用程序Insight,并尝试将“信息”日志记录到代码中以了解导致故障的部分。

有关其他参考,请检查以下文档:

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

希望有帮助。