我有一个站点使用用于管理员(后端)的 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 列表信息 poblated,因此在更新 SharePoint 列表时我需要更新该 c# 列表,它在主站点(后端)上工作) 但前端没有收到通知。
请您参考如下方法:
@rolivares - 我对你的问题的理解是你有一个内存列表,当有人在你的管理站点上添加一个项目时你想要更新它。您已经使用单例对象实现了它。但是,当事件接收器在管理站点上触发时,该列表不会在您的扩展站点(前端)上更新。
虽然这 2 个“站点”指向相同的内容数据库,但 IIS 将它们作为单独的应用程序运行,因此您将有 2 个不同的内存列表实例。这就是为什么您的前端没有更新的原因。
