我有一个站点使用用于管理(后端)的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>
有任何帮助吗? 提前谢谢。
更新:我正在使用Singleton模式将List管理为C#单例类,该类与SharePoint列表信息相关,因此在更新SharePoint列表时我需要更新该c#列表,它正在主站点上工作(后端) )但前端没有收到通知。
答案 0 :(得分:0)
@rolivares - 我对您的问题的理解是,当有人在您的管理网站上添加项目时,您有一个内存列表要更新。您已使用单个对象实现了此功能。但是,当事件接收器在管理站点上触发时,列表不会在您的扩展站点(前端)上更新。
虽然2个“站点”指向相同的内容数据库,但IIS将它们作为单独的应用程序运行,因此您将拥有2个不同的单例内存列表实例。这就是为什么你的前端没有更新。
答案 1 :(得分:-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中的this example
的此链接