1

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

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

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

我可以做些什么来调试我的事件接收器?据我所知,通过自定义程序集扩展 SharePoint 的唯一方法是将它们部署到 GAC - 我在这里遗漏了什么吗?

最好的问候
奥利弗·哈纳皮

4

3 回答 3

1

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

于 2009-06-26T07:10:22.980 回答
0

我今天早上刚遇到这个问题。关于断点未命中,我遇到了同样的错误。就我而言,这是因为我附加了错误的 w3wp.exe 进程。如果您在服务器上运行了多个 w3wp.exe 进程 - 请确保您附加到正确的进程以进行调试。

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

希望有帮助!!

于 2011-01-10T18:47:21.577 回答
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 站点团队,我将附加到 PID 23648

于 2018-08-29T08:00:13.330 回答