Приемник событий области фермы
-
10-12-2019 - |
Вопрос
По некоторым соображениям безопасности в одном из наших решений на уровне фермы нам необходимо ограничить некоторые действия, используя Event Receiver
-FileMoving
событие.Однако, как известно, приемники событий могут быть развернуты только функциями уровня Site или SiteCollection.Поскольку решение, обеспечивающее основные функциональные возможности, находится в пределах фермы, нам необходимо иметь возможность применять этот приемник событий к каждой существующей библиотеке документов.
Я подумал о создании функции уровня сайта для приемника событий, а затем включить ее на всех сайтах через FeatureActivated
событие функции области фермы.Но это не распространяется на новые сайты, добавляемые после активации этой функции.А поскольку для функций уровня сайта нет настройки «включить по умолчанию», это не работает.
Потом я узнал Сайт добавлен событие, где я могу включить эту функцию, как только она будет добавлена.Но, насколько я понимаю, это также область действия сайта (SPWeb), поэтому новые веб-приложения и семейства веб-сайтов не рассматриваются.
Итак, есть идеи, как я могу создать решение на уровне фермы для развертывания события FileMoving по всей ферме?
Корпоративная версия Sharepoint 2010/2013
Решение
Для достижения этой цели вы можете использовать сшивание объектов.Вы просто развертываете простой файл элемента в функции и активируете его на уровне веб-приложения.
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<FeatureSiteTemplateAssociation Id="the guid of the feature to staple to new sites" TemplateName="GLOBAL"/>
</Elements>
Также см. этот довольно информативный пост SP.SE о сшивании функций: