繁体   English   中英

简单的自动托管 SharePoint 应用程序永远不会触发远程事件接收器

[英]Simple autohosted SharePoint app is never firing the remote event receiver

编辑:我将其更改为 SharePoint 托管的应用程序,该应用程序仅使用 Web 部件来显示公告。 它仍然未能参加该活动

<AllUsersWebPart WebPartZoneID="full" WebPartOrder="0">
    <![CDATA[ 
  <webParts>
  <webPart xmlns="http://schemas.microsoft.com/WebPart/v3">
  <metaData>
  <type
name="Microsoft.SharePoint.WebPartPages.XsltListViewWebPart,
Microsoft.SharePoint,Version=14.0.0.0,Culture=neutral,
PublicKeyToken=71e9bce111e9429c" />
  <importErrorMessage>
  Cannot import this Web Part.
  </importErrorMessage>
  </metaData>
  <data>
    <properties>
      <property name="Title"
       type="string">Announcements</property>
      <property name="ListDisplayName"
       type="string">Announcements</property> 
       <property name="ChromeType"
       type="chrometype">TitleOnly</property>
    </properties>
  </data>
</webPart>

]]>

然后我有一个 /Services/AnnouncementsReceiver.svc,由 VS2013 生成,内容如下:

    public SPRemoteEventResult ProcessEvent(SPRemoteEventProperties properties)
    {
        SPRemoteEventResult result = new SPRemoteEventResult();

        switch (properties.EventType)
        {
            // demonstrate ability to modify prior to adding
            case SPRemoteEventType.ItemAdding:
                result.ChangedItemProperties.Add("Body", properties.ItemEventProperties.AfterProperties["Body"] += "\n ** For internal use only ** \n");
                break;

            // demonstrate ability to cancel a delete event
            case SPRemoteEventType.ItemDeleting:
                result.ErrorMessage = "Items cannot be deleted from this list";
                result.Status = SPRemoteEventServiceStatus.CancelWithError;
                break;
        }
        return result;
    }

问题是这段代码永远不会触发。 我可以创建任意数量的列表项,并且该事件永远不会触发。 我什至让它立即抛出异常并始终返回错误,但它永远不会触发。 它肯定与应用程序的公告列表相关,它应该捕捉正确的事件。 这是 Elements.xml 的片段

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Receivers ListTemplateId="10000">
    <Receiver>
      <Name>AnnouncementsReceiverItemAdding</Name>
      <Type>ItemAdding</Type>
      <SequenceNumber>10000</SequenceNumber>
      <Url>~remoteAppUrl/Services/AnnouncementsReceiver.svc</Url>
    </Receiver>
    <Receiver>
      <Name>AnnouncementsReceiverItemDeleting</Name>
      <Type>ItemDeleting</Type>
      <SequenceNumber>10000</SequenceNumber>
      <Url>~remoteAppUrl/Services/AnnouncementsReceiver.svc</Url>
    </Receiver>
    <Receiver>
      <Name>AnnouncementsReceiverItemAdded</Name>
      <Type>ItemAdded</Type>
      <SequenceNumber>10000</SequenceNumber>
      <Url>~remoteAppUrl/Services/AnnouncementsReceiver.svc</Url>
    </Receiver>
  </Receivers>
</Elements>

我还确认它是由 Package.package 部署的。 我已经无计可施了。

是的,在 VS 2013 中部署应用程序很繁琐,因为缓存一如既往地与现实脱节(缓存我存在的祸根!)。 每当事情停止正常工作时,请尝试此操作:

  1. 退出 VS 2013
  2. 从 cmd 提示符运行以下命令:net stop sptimerv4、iisreset /noforce /timeout:300、net start sptimerv4
  3. 关闭所有浏览器窗口,启动 VS 2013,设置断点,按播放。

根据需要冲洗并重复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM