问题描述
我正在接触GRPC,在调试它时遇到一些问题,如下所示:
我有一个包含多个项目的解决方案,相关的一个是安装了包的.NET5: Nugets
所以它甚至引用了我的DBContext所在的另一个项目(.NET Standard 2.1),但我想这并不相关。
该项目几乎是模板化的项目,在我看来运行起来没有任何问题!这意味着我可以在本地计算机上启动和调试它。
现在我想将它部署到我的Azure应用程序服务中,在那里我保存了一个连接字符串,或者更好地说,是对居住在密钥库中的这个字符串的引用。我可以毫无问题地进行部署,它会运行,显示带有模板化响应的页面:与GRPC端点的通信必须通过GRPC客户端进行。要了解如何创建客户端,请访问:https://go.microsoft.com/fwlink/?linkid=2086909"
我不能做的事,但我真的想做的是远程调试这个项目!我做了什么:
- 从VS成功部署项目
- 云资源管理器,选择应用服务,附加调试器和异常: A process named "w3wp" with arguments "XYWebApp" was not found. The process may still be starting. Please try again.
非常感谢!
推荐答案
在Visual Studio中有两种运行调试器的方法:
调试菜单-带有一些出站端口设置:谢谢您Alex AIT,将您的评论发布为answer。
来自云资源管理器 如果您想使用云资源管理器,请尝试以下步骤。
您需要执行以下步骤(简要):
- 将Web App部署到Azure平台
- 将远程调试器附加到Web应用程序
- 确认远程调试器已附加到W3WP进程
- 设置断点
- 执行呈现异常的进程,执行缓慢或以意外方式执行
- 调试其他技术
详细:
将远程调试器附加到Web应用程序
在Visual Studio中打开云资源管理器,展开Web应用程序,右键单击要附加到的Web应用程序,然后单击附加调试器。(您可以下载云资源管理器here或通过选择工具-&>扩展和更新…从Visual Studio中安装云资源管理器,然后搜索云资源管理器。)将远程调试器附加到Microsoft Azure应用程序服务Web应用程序
如果您尚未启用远程调试应用程序设置,则将在您首次附加调试器时为您启用远程调试应用程序设置。如果您的Web应用程序使用基于IP的SSL证书,您可能会得到此例外:System.Runtime.InteropServices.COMException (0x89710023)
在这里,您需要做的是获取kudu控制台的IP地址,我对here进行了描述,并将该IP地址用于您正在远程调试的*.azurewebsites.net主机名,方法是将IP主机名组合添加到主机文件中。
确认远程调试器已附加到W3WP进程
在浏览器中打开Web应用程序后,返回到Visual Studio并单击调试->附加到Process…。然后从限定符下拉列表中选择要调试到的Web应用程序请注意,您可以在可用进程列表中将W3WP进程的ID与在kudu的进程资源管理器中看到的W3WP进程的ID进行比较
确认后,继续并开始调试。
设置断点
将调试器附加到Web应用程序时,它将在您的浏览器中打开Web应用程序。使浏览器保持打开状态,但将焦点更改为Visual Studio并设置断点,就像在本地调试时一样。
- 调试必须=True
- 远程调试需要符号,而ASP.NET网站没有符号,它们只存在于ASP.NET项目中,因此,如果在设置断点时出现此错误,您将无法远程调试:*"当前不会命中断点。尚未加载此文档的符号。"*(远程调试时未命中调试断点)。
这篇关于由于缺少w3wp,无法远程调试GRPC服务(.net5的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!