在 SharePoint 加载项中调试远程事件接收器并排除故障

配置远程 SharePoint 测试站点的调试

注意

此部分中的程序只适用于以下情况:你的测试 SharePoint 网站与 Visual Studio 位于不同的计算机上,或者你将 SharePoint Online 开发人员网站作为测试网站)。 如果 SharePoint 和 Visual Studio 位于同一台计算机上,则跳过此部分。

如果 Visual Studio 中的 SharePoint 加载项项目包含远程事件接收器 (RER) 或加载项事件接收器,在使用 (F5) 调试加载项之前,必须在项目属性中进行一些其他快速配置。 反过来,此配置需要进行一些 Azure 配置。 无需对具有 RER 或加载项事件的每个项目重复 Azure 配置。 (如果加载项包含 AppInstalled 事件处理程序,那么即使按 F5 或 Ctrl+F5 [在不调试的情况下运行],加载项也不会运行,除非在此部分中执行配置。)

配置 Azure

  1. 如果还没有 Azure,请获取 Microsoft Azure 订阅。 它作为权益包含在 MSDN 订阅中。

  2. 执行创建服务总线命名空间中的说明。

在 Visual Studio 中配置 SharePoint 加载项项目

  1. 你应该拥有最新版本的 Office 开发人员工具 for Visual Studio,因此 请在此处运行 WebPI 安装程序,或者 运行适用于 Visual Studio 2015 的 Office 开发人员工具的安装程序

  2. 将 RER 或加载项事件处理程序添加到 Visual Studio 中的 SharePoint 加载项项目,在“解决方案资源管理器”中右键单击项目并选择“属性”

  3. 在属性窗格中,打开“SharePoint”选项卡并滚动到底部。

  4. 选中复选框"通过 Microsoft Azure 服务总线启用调试"。

  5. 在提供的文本框中输入完整的连接字符串。 使用以下步骤获取字符串。

    1. 登录到 Azure 门户并打开“服务总线”选项卡。

    2. 打开创建用于 RER 调试的命名空间,并导航到连接字符串。 Azure 门户 UI 更改较为频繁。 如果无法找到连接字符串,请参阅 Azure 门户帮助

    3. 复制"SAS"连接字符串。 这是您在 Visual Studio 项目属性中输入的字符串。

今后当您在 Visual Studio 中创建 SharePoint 外接程序项目时,此信息将会预填充,因此您不必每次都打开 Azure 门户。

测试配置

使用本节中的步骤来验证是否可以调试 RER。

创建远程事件接收器项目

  1. 在 Visual Studio 中,创建提供程序托管的 SharePoint 加载项。 请参阅开始创建提供程序托管的 SharePoint 加载项

  2. 在“解决方案资源管理器”中,选择加载项项目的节点。

  3. 在菜单栏中,选择“项目”>“添加新项目”

  4. 在“模板”窗格中,选择“列表”模板,然后选择“添加”

  5. 选择“完成”将默认自定义列表添加到加载项项目。

  6. 通过在“模板”窗格中选择“远程事件接收器”模板,将另一项添加到加载项项目中。

  7. 在“名称”框中,保留默认名称 (RemoteEventReceiver1),然后选择“添加”

  8. 在“需要哪种类型的事件接收器?”列表中,选择“列表项事件”。 将事件源保留为“List1”,即在之前步骤中添加的列表。

  9. 在“处理下列事件”列表中,选择“正在添加的项目”,然后选择“完成”

    一个 Web 服务将添加到 Web 应用程序以处理你指定的远程事件。 一个远程事件接收器将添加到 SharePoint 外接程序。 接收器会引用该 Web 服务和事件接收器的 Elements.xml 文件中的列表项事件。

  10. 在加载项项目中,打开 AppManifest.xml。

  11. 将起始页更改为列表页:AddInProjectName/Lists/List1。

  12. AddInProjectName 替换为加载项项目的名称,例如 SharePointAddIn4/Lists/List1。 在本示例中,我们将起始页设置为列表页。 但是,在典型的加载项中,你可能指向 Web 项目页面上自己的 UI。

运行和测试事件处理程序调试

  1. 完成本文前面所述的过程在 Visual Studio 中配置 SharePoint 外接程序项目(如果尚未执行)。

  2. 在 Web 项目中,打开远程事件接收器服务 (RemoteEventReceiver1.svc),然后将断点添加到 ProcessEvent() 方法内的任意代码行。

  3. 选择“F5”键运行项目。

  4. 选择“+ 新建项目”按钮为列表添加项目。

  5. 为项目提供一个标题,然后选择“保存”。 向远程事件接收器添加的断点已达到,验证你是否在调试远程事件接收器。

  6. 选择“F5”键继续运行项目,然后在完成时停止调试。

开启/关闭 Visual Studio 中需要配置事件调试的通知

如果项目中存在远程事件,且尚未配置远程事件调试,则 Visual Studio 会提示你配置远程事件调试(参阅下图)。 可以通过清除“SharePoint”选项卡上的“在未配置远程事件调试时通知我”复选框来更改此行为。

远程事件调试通知

远程事件接收器中的通知

验证服务是否托管在服务总线中

选择 F5 并信任加载项后,在浏览器中转到服务总线命名空间,例如 http://mynamespace.servicebus.windows.net,应能看到以数形式列出的终结点。 下图显示当列出命名空间时(即,在选择 F5 前)所呈现的页面。

浏览到服务总线命名空间

浏览到服务总线命名空间

RER 未达到断点

根据事件,远程事件可能为同步或异步。 如果为异步事件,可能需要几秒钟或更长时间才能达到断点。

错误:“没有终结点侦听”

当您的处理程序在实际运行时,您收到以下错误:

"远程事件接收器标注失败。 详细信息:没有任何终结点侦 https://{domain}:nnnnn/{path}/AppEventReceiver.svc 听该终结点可以接受消息。 这通常是由不正确的地址或 SOAP 操作引起的。“ (其中 nnnnn 是端口) 。

SharePoint 要求在实际使用中,处理程序的 URL 中没有显式端口。 这意味着您必须对 HTTPS 使用端口 443(推荐配置),或者对 HTTP 使用端口 80。

错误:“无法为 SSL/TLS 安全通道和颁发机构建立信任关系”

当您的处理程序在实际运行时,您收到以下错误:

"远程事件接收器标注失败。 详细信息:无法与颁发机构建立 SSL/TLS 安全通道的信任关系。”

当加载项位于 SharePoint Online 中,但远程事件接收器服务位于本地环境中,且使用我们推荐的 HTTPS 时,托管接收器的服务器无法在生产中使用自签名的证书。 服务器必须具有来自证书颁发机构的公开接受的证书。 如果加载项位于本地 SharePoint 场上,则可接受自签名证书。

另请参阅