如何使用远程调试器调试SharePoint EventReceiver?

时间:2009-06-26 06:42:09

标签: sharepoint remote-debugging event-receiver

我编写了一个SharePoint EventReceiver(Windows SharePoint Services 3.0),并希望使用在不同计算机上运行的Visual Studio 2008 SP1进行调试。我尝试了以下步骤:

  • 安装事件接收器(我知道这是有效的,因为日志文件证明代码已执行)。
  • 在SharePoint服务器的GAC中注册我的事件接收器类库(内置在调试模式下)。
  • 在SharePoint服务器上启动Visual Studio远程调试监视器。
  • 附加从本地计算机上处​​理SharePoint服务器上的w3wp.exe。

不幸的是Visual Studio告诉我,我设置的断点不会被击中。我想在将程序集安装到GAC时,调试符号(或调试所需的任何内容)都会丢失。

如何调试我的事件接收器?据我所知,通过自定义程序集扩展SharePoint的唯一方法是将它们部署到GAC - 我在这里缺少一些东西吗?

最诚挚的问候 Oliver Hanappi

3 个答案:

答案 0 :(得分:1)

您可以尝试手动将程序集的调试(.pdb)文件复制到目标计算机上的c:\ windows \ assembly \ MSIL \ ASSEMBLYNAME \ VERSION文件夹中,然后重新启动IIS。

答案 1 :(得分:0)

我今天早上遇到了这个问题。关于没有被击中的断点,我得到了同样的错误。在我的情况下,这是因为我附加了错误的w3wp.exe进程。如果您在服务器上运行了多个w3wp.exe进程 - 请确保附加到正确的调试过程。

顺便说一句 - 你没有提到在你的步骤中的任何地方运行iisreset。将自定义事件收到的程序集复制到GAC后 - 请确保运行iisreset,以便Web服务器正在接收您的更改。

希望有所帮助!!

答案 2 :(得分:0)

这个问题很老,但我只想分享以下命令,以帮助选择正确的w3wp.exe进程。

假设您已经部署并启用了事件接收器。

在命令行上执行此命令

%windir%\system32\inetsrv\appcmd.exe list wp

这将打印PID并指示其用于哪个站点。

C:\Windows\system32>%windir%\system32\inetsrv\appcmd.exe list wp
WP "11632" (applicationPool:4a8cbf60637942ff9a2486d0e682ac54)
WP "16800" (applicationPool:SharePoint Central Administration v4)
WP "23648" (applicationPool:teams)

现在,您可以轻松地将Visual Studio调试器附加到正确的进程。 例如,对于SP站点 team ,我将附加到PID 23648