在Visual Studio 2022中使用.NET 6远程调试Azure Web作业

xqnpmsa8  于 2022-11-17  发布在  .NET
关注(0)|答案(1)|浏览(200)

我按照此教程在Azure中创建了一个简单的Web作业:https://learn.microsoft.com/en-us/azure/app-service/webjobs-sdk-get-started。Web作业本身执行其工作,使用队列中的消息,我看到它们出现在Application Insights中。但是,我希望使用Visual Studio 2022中提供的工具在本地计算机上调试该函数。
我已使用以下配置文件设置发布:

接下来,我在Hosting菜单下附加了调试器:

我注意到的第一件事是在函数中放置断点时没有加载符号的消息:

当我向队列中添加消息时,它会被Web作业使用,但断点从未命中。我已经阅读了很多关于此问题的类似问题,但我没有进一步的进展。

  • 在Azure Portal中,我已在配置〉常规设置

    下启用远程调试
  • 在Visual Studio 2022中,我检查了是否附加了正确的进程

    这里我有点困惑,连接目标是通过端口4024连接的,这是根据this document,Visual Studio 2019的端口。但是,没有找到端口4026的连接目标。

"我错过了什么“"我是不是忘了其他的设定”
如果尝试将堆栈设置.NET版本从APS.NET V4.8更改为NET 6(LTS),但没有帮助。

平台架构是否应该与我的机器架构相匹配才能让它正常工作?或者它是否没有以任何方式与调试器链接?


指令集
还有什么我应该检查或尝试的吗?因为我的头发在这里变白了:)

djmepvbi

djmepvbi1#

很抱歉这里的延误!
对于32位和64位,它都应该是4024。请参阅此Azure文档:Microsoft Azure应用程序服务上的远程调试器端口
通常,错误 “当前不会命中断点。尚未为此文档加载任何符号。" --此错误消息指示我们可以启动调试进程并附加,但不能在项目中的任何或某些代码行上设置断点。
最可能的原因:生成应用程序时没有调试符号或调试符号不可用
请尝试以下步骤:

  • 验证调试符号是否正在使用、发布并处于同步状态
  • 通过从Visual Studio的“工具”〉〉“选项”〉〉“调试”〉〉“常规”菜单中禁用“启用仅我的代码”,可以解决此问题

缩小问题范围的其他因素:

  • 调试符号必须在本地可用或部署到Azure应用程序服务,并且必须与尝试调试的本地代码匹配。
  • 建议使用Cloud Explorer而不是Server Explorer进行连接和调试,这需要Azure SDK。
  • 您可以选择Manually Attach a Debugger to Azure Web Apps以进一步解决此问题,或者建议将此作为一种解决方法。(旧博客,尝试类似步骤)
  • 请验证所需的端口(Visual Studio远程调试器端口分配)是否在企业防火墙和本地计算机上打开。作为测试,您可以使用Wireshark/netmon之类的工具,查看该端口是否成功连接到进程所需的端口(4024)。

相关问题