【问题标题】:How can I debug a SharePoint EventReceiver with Remote Debugger?如何使用远程调试器调试 SharePoint 事件接​​收器?
【发布时间】:2009-06-26 06:42:08
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: sharepoint remote-debugging event-receiver


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      希望有帮助!!

      【讨论】:

        【解决方案3】:

        这个问题很老了,但我只想分享以下命令,以帮助选择正确的 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 站点 teams,我将附加到 PID 23648

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-06-11
          • 2023-02-17
          • 1970-01-01
          • 2023-03-07
          • 2013-04-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多