这更像是一个“为什么这样工作”而不是“我如何使这个工作”之类的问题。
我有一个正在远程调试的 WCF Web 服务。它被部署到安装了 VS 2010 远程调试器并作为 Windows 服务运行的登台服务器。权限是正确的,我可以毫无问题地附加到进程。我遇到的问题是我无法始终如一地加载符号。
我将 WCF 服务部署到 C:\Webs\MyService,并在 C:\Webs\MyService\bin 中包含各种 DLL。它被设置为具有自己的应用程序池的单独站点。我发现即使 bin 文件夹中有必要的 .pdb 文件,当我从本地计算机附加到 w3wp.exe 进程时,Visual Studio 也不会加载任何符号。发生的事情是当 IIS 启动并生成工作进程时,我的服务 DLL 将被复制到临时 ASP.NET 文件目录下的深处,例如 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP .NET 文件\root\19f82539\e55fff8f\assembly\dl3\2926a261\f625d158_f62ecd01。我发现如果我手动将 .pdb 文件复制到此文件夹,则会加载符号并且我可以进行调试。
我想知道为什么它会这样工作,以及如何避免将符号文件手动复制到另一个目录。更糟糕的是,如果我必须进行更改并重新部署,工作进程将无法识别它们。我不得不重新启动 IIS,这导致创建了一个不同的临时目录,需要我再次复制 .pdb。