2

我有一个站点使用用于管理(后端)的 Windows 表单身份验证。该站点有一个使用 FBA 的 Web 扩展站点,并且是普通用户(前端)可以访问的站点。

为了完成一些实现,我创建了一个自定义 SPListEventReceiver 并将其附加到主体网站的一个特定列表中。

因此,当我对项目进行更改时,会引发自定义处理程序,并且监听事件的单例会使用来自 SharePoint 列表的更新信息更新单例元素。问题:没有通知扩展站点,因此驻留在扩展站点上下文中的单例不会收到有关 SharePoint 列表更改的通知。

我必须如何注册 SPListEventReceiver 才能在扩展站点上接收项目更改通知?

类代码

    public class CampagnasListItemEventReceiver : SPItemEventReceiver
    {
        /// <summary>
        /// An item was added.
        /// </summary>
        public override void ItemAdded(SPItemEventProperties properties)
        {
            base.ItemAdded(properties);
            // DoSomething

        }
}

Elements.xml

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Receivers >
      <Receiver>
        <Name>CampagnasListEventReceiverListAdded</Name>
        <Type>ListAdded</Type>
        <Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>
        <Class>{Class Namespace}</Class>
        <SequenceNumber>10000</SequenceNumber>
      </Receiver>
  </Receivers>
</Elements>

有什么帮助吗?提前致谢。

更新:我正在使用单例模式将列表管理到 C# 单例类中,该类使用 SharePoint 列表信息进行更新,因此在更新 SharePoint 列表时,我需要更新该 c# 列表,它在主要站点(后端)上工作,但是前端没有收到通知。

4

2 回答 2

0

@rolivares - 我对您的问题的理解是,当有人在您的管理站点上添加项目时,您需要更新一个内存列表。您已经使用单例对象实现了这一点。但是,当事件接收器在管理站点上触发时,该列表不会在您的扩展站点(前端)上更新。

尽管 2 个“站点”指向相同的内容数据库,但 IIS 将它们作为单独的应用程序运行,因此您将拥有 2 个不同的单例内存列表实例。这就是您的前端没有更新的原因。

于 2014-11-12T13:56:34.877 回答
-1

根据元素方案,您错过了ListUrl

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Receivers ListUrl="Lists/MyList"> <!-- ====== Modify accordingly ===== -->
      <Receiver>
        <Name>CampagnasListEventReceiverListAdded</Name>
        <Type>ListAdded</Type>
        <Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>
        <Class>{Class Namespace}</Class>
        <SequenceNumber>10000</SequenceNumber>
      </Receiver>
  </Receivers>
</Elements>

请参阅MSDN 中的此示例

以及MSDN 事件注册方案的链接

于 2014-10-30T17:30:47.307 回答