由于缺少 w3wp,grpc 服务 (.net 5) 无法成为远程调试器

grpc service (.net5) can not be remote debugged due to missing w3wp

我正在接触 gRPC,在调试它时遇到了一些问题,如下所示:

我有一个包含多个项目的解决方案,相关的一个是带有安装包的 .NET5: Nugets

所以它甚至引用了我的 DBContext 所在的另一个项目(.NET Standard 2.1),但我想这不相关。

该项目几乎是模板化项目,据我所知运行没有任何问题!这意味着我可以在我的本地机器上启动和调试它。

现在我想将它部署到我的 azure 应用程序服务,我在其中保存了一个连接字符串,或者更确切地说是对该字符串的引用保存在密钥库中。我可以毫无问题地部署并运行,显示带有模板化响应的页面:“必须通过 gRPC 客户端与 gRPC 端点进行通信。要了解如何创建客户端,请访问:https://go.microsoft.com/fwlink/?linkid=2086909"

我做不到,但真正想做的是远程调试这个项目!我做了什么:

正如我所说:运行 并在部署和启动应用程序服务后显示响应...并且它在本地工作!

Azure 服务配置了 HTTP2,允许远程调试,我的 VS 2019 版本为 IDE。在此错误之后,应用程序服务仍然 运行。我是否错过了服务端的某些配置?

非常感谢!

在 Visual Studio 中 运行 调试器有 2 种方法:

  1. 调试菜单 - 带有一些出站端口设置:谢谢 Alex AIT , posting your comment as an answer.

  2. 来自 Cloud Explorer 如果您想使用 Cloud Explorer,请尝试以下步骤。

您需要执行这些步骤(简要):

  • 将 Web 应用程序部署到 Azure 平台
  • 将远程调试器附加到 Web 应用程序
  • 确认远程调试器附加到 W3WP 进程
  • 设置断点
  • 执行呈现异常、执行缓慢或以意外方式执行的进程
  • 调试其他技术

详细:

将远程调试器附加到 Web 应用程序

在 Visual Studio 中打开 Cloud Explorer,展开 Web Apps,右键单击要附加到的 Web App,然后单击 Attach Debugger。 (您可以下载 Cloud Explorer here 或通过 selecting Tools -> Extensions and Updates… 从 Visual Studio 中安装它,然后搜索 Cloud Explorer。)

将远程调试器附加到 Microsoft Azure App Service Web 应用程序

如果您还没有启用远程调试应用程序设置,它将在您第一次附加调试器时为您完成。

如果您的 Web 应用程序使用基于 IP 的 SSL 证书,您可能会遇到此异常:System.Runtime.InteropServices.COMException (0x89710023) 在这里,您需要做的是获取 KUDU 控制台的 IP 地址,我描述了 here 并将该 IP 地址用于 *.azurewebsites.net 您通过添加 IP HOSTNAME 组合进行远程调试的主机名到主机文件。

确认远程调试器附加到 W3WP 进程

Web 应用程序在浏览器中打开后 return 到 Visual Studio 然后单击调试 –> 附加到进程…。然后 select 您要从 Qualifier 下拉菜单中调试的 Web App

请注意,您可以将可用进程列表中的 W3WP 进程的 PID 与 KUDU 中进程资源管理器中看到的 W3WP 进程的 PID 进行比较

确认后继续并开始调试。

设置断点

当您将调试器附加到您的 Web 应用程序时,它将在您的浏览器中打开该 Web 应用程序。让浏览器保持打开状态,但将焦点更改为 Visual Studio 并像在本地调试时一样设置断点。

  • 调试必须 = true
  • 远程调试需要符号,ASP.NET 网站没有符号,它们只存在于 ASP.NET 项目,所以如果你在设置断点时出现这个错误,你将不会能够远程调试:***“当前不会命中断点。没有为该文档加载任何符号。” ***(远程调试时未命中调试断点)。