【问题标题】:How to Diagnose sample ASP.NET/Cosmos Web App deployed to Azure App Service?如何诊断部署到 Azure App Service 的示例 ASP.NET/Cosmos Web App?
【发布时间】:2021-12-25 02:24:48
【问题描述】:

我已经分叉了示例 PlanetaryDocs ASP.NET Web 应用程序。此 WebApp 连接到我的 Cosmos DB (SQL/DocumentDB),并且似乎通过 Docker 容器从 Visual Studio 运行良好...我已将其发布到 Azure 容器注册表 (ACR)。

当我部署到 Azure 应用服务时,它会提供 URL,当我将浏览器指向它时,我会看到“应用程序错误,如果您是应用程序管理员,则可以访问诊断资源”但单击超链接(对于诊断资源)没有影响。

  1. 我尝试使用 VS Code 应用服务扩展重新启动应用,并查看日志中的一些错误消息没有发现任何帮助(只有几条关于过去 5 分钟内没有跟踪的消息和“日志流会话已结束” )...也许重启会结束日志流会话?如何获取重启日志?
  2. 因此,如果应用程序从我的开发计算机运行,因为我的开发计算机的 IP 地址被列为 Azure 门户(对于我的 Cosmos DB 配置)中允许访问我的 cosmos DB 的外部 IP 地址之一,这是 (问题?我是否必须将 Azure 应用服务实例的 IP 地址添加为允许的外部 IP 地址之一?我怎么做?也许我需要设置一个虚拟网络?
  3. 除了查看日志,还有其他可用的调试工具吗?如何让该超链接在网页上正常工作?

2022 年 1 月 5 日星期三更新 #1(VS 2019):

  1. 哇!我喜欢 VS 2019 Cloud Explorer 的 UI,我发现它不适用于 VS2022。有人知道他们为什么把它拿走吗?

  2. 所以在过去,我能够使用 VS2019 创建一个 docker 容器(在发布模式下)并将其部署到 Azure Kubernetes 并使用 VS2019 调试器附加到 Kubernetes Pod,不知何故它能够神奇地向我展示源代码让我迈出一步!是否可以或有必要在调试模式下创建 docker 容器并将其部署到 Azure Web 应用程序并附加调试器?如何创建调试模式的 docker 容器?

  3. 按照那些很好的说明,我能够附加 VS 2019 调试器,但从堆栈跟踪中看不到任何东西——即使在按下暂停(双竖线)按钮后也是如此。嘘......我看到我有三个正在运行的任务和很多线程,但我看不到它们。难道我做错了什么?我尝试点击继续并暂停几次,希望得到一些线索,但没有运气。

  4. 这是来自az.cmd webapp browse 命令的日志,但我也找不到任何线索。

WARNING: 2022-01-05 22:51:44 PLANETARYDOCS GET / - 80 - 10.0.128.7 ReadyForRequest/1.0+(AppInit) - - xyz.azurewebsites.net 200 0 0 377 417 15
WARNING: 2022-01-05 22:51:45 PLANETARYDOCS GET /DebugWarmUp X-ARR-LOG-ID=35910c0e-098c-430a-adb7-c91f1086599a 80 - 10.0.64.5 - - - xyz.azurewebsites.net 404 0 2 470 600 31
WARNING: 2022-01-05T22:53:27  PID[21316] Verbose     SnapshotHelper::TakeSnapshotTimerCallback
WARNING: 2022-01-05T22:53:27  PID[21316] Verbose     SnapshotHelper::TakeSnapshotInternal - no new files in CodeGen
WARNING: 2022-01-05T22:54:29  No new trace in the past 1 min(s).
WARNING: 2022-01-05T22:55:29  No new trace in the past 2 min(s).
WARNING: 2022-01-05T22:56:2
WARNING: 9  No new trace in the past 3 min(s).
WARNING: 2022-01-05T22:57:29  No new trace in the past 4 min(s).
WARNING: 2022-01-05T22:58:29  No new trace in the past 5 min(s).
WARNING: 2022-01-05T22:59:29  No new trace in the past 6 min(s).
WARNING: 2022-01-05T23:00:29  No new trace in the past 7 min(s).

2022 年 1 月 5 日星期三更新 #2(工藤):

  1. 我按照 HarshithaVeeramalla 的指示(谢谢)在 http/RawLogs 目录中找到了一些(原始)日志。没有应用程序目录,我在其他任何地方都找不到任何日志或任何其他有趣的东西。日志看起来像是来自浏览器的大量 GET 请求,用于将网站图标和其他图形与一些我无法识别的 AJAX/REST 调用混合在一起......
  2. kudu/trace 目录包含很多 XML 文件,从文件名可以看出我今天重启了 web 应用程序。
  3. 所以让我们假设问题是我无法连接到我的 azure cosmos DB,也许我的 cosmos 端点有错字。某处应该有一个 C# 堆栈跟踪(最好在其中包含一些不错的源代码行号)......这是我可以在 Kudu 中诊断出来的吗?我会去哪里看?

谢谢!

【问题讨论】:

  • 所以你通过 ips 限制了对 cosmos 的访问,并在某个云资源的容器中运行它,并且没有添加该 ip.. 对吗?
  • 那是正确的...我不知道我的应用服务实例的 IP 地址是什么,也不知道如何获取它。 (如何为 ASP.NET 6 应用获取它?)应用服务的 VSCode 扩展仅支持 nodejs 应用的 SSH 和调试会话。
  • 去kudu站点查看日志文件。转到 https://[your-WebApp].scm.azurewebsites.net/ ,调试控制台 > CMD,进入 D:\home\LogFiles\Application`

标签: c# asp.net-core entity-framework-core azure-web-app-service azure-cosmosdb-sqlapi


【解决方案1】:
  1. 除了查看日志,还有其他可用的调试工具吗?如何让该超链接在网页上正常工作?

as @Harshitha 建议可以从 kudu 站点查看日志,如转到 kudu 站点检查日志文件。转到https://[yourWebApp].scm.azurewebsites.net/,调试控制台> CMD,进入D:\home\LogFiles\Application。

要调试您的应用程序,请从 Visual Studio 2019 连接,它应该可以在不更改门户设置的情况下运行。

  1. 打开 Visual Studio 和您的项目
  2. 打开云资源管理器View -> Cloud Explorerctrl+\, ctrl+x
  3. 在 Cloud Explorer 中找到您的应用服务节点并选择它
  4. 从上下文菜单或操作窗格中选择Attach Debugger。 如果 Visual Studio 没有显示在“Classic”应用程序设置屏幕中,您将需要使用新的配置菜单,然后选择“常规设置”选项卡。刀片打开。

请找到这些article 了解更多信息。

【讨论】:

    【解决方案2】:

    这并不奇怪:我遇到了一些问题。

    1. 我发现 azure 门户 Web GUI 非常令人困惑,因为在哪里指定 dockerhub 帐户和容器的映像名称以及将浏览器指向只有一个计划但没有泊坞窗图像根本没有帮助。 解决方案:部署 linux Docker 容器时,请使用 az create webapp 命令,而不是 azure 门户或 Visual Studio 或 VSCode 扩展。
    2. 当您使用az webapp create 命令并且未能使用--deployment-container-image-name 并直接使用--runtime "DOTNET:6.0" 开关时(因为我在省略--runtime 开关时收到错误消息)再次收到无用的错误消息。我只是认为指定我的 dockerhub 用户名和密码就足够了,它会提取与 Web 应用程序名称匹配的图像......不是这样! 解决方案:使用--deployment-container-image-name 代替--runtime 开关。
    3. 如果您放弃 Docker,而只是将您的应用程序与 2022 Visual Studio 的发布功能(在解决方案视图中右键单击项目)部署到 Windows(而不是 linux)应用程序服务计划,您只需使用 Visual Studio 2022 和然后寻找微小的“...”并单击它,您会提示您附加调试器...非常好但一点也不明显!显然,可以调试 linux ASP.NET 应用程序,但您必须使用 SSH。

    当然,如果某个博主或(更好的)微软提供了一个小例子,这一切都可以避免……我想我应该自己开一个博客。

    我还没有尝试将 Visual Studio 调试器附加到 windows docker 容器...这是另一天的战斗...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-24
      • 1970-01-01
      相关资源
      最近更新 更多