Развертывание сборки приемника событий SharePoint в BIN веб-приложения
Можно ли успешно развернуть сборку, содержащую обработчики событий для настраиваемой функции списка SharePoint (таким образом, классы, которые зависят от Microsoft.SharePoint
сборка) в корзину веб-приложения вместо GAC?
Возможность сделать это, безусловно, присутствует в разметке XML в файле manifest.xml моей функции. Тем не менее, я видел несколько ссылок на то, что развертывание политик CAS для сборки является обязательным, и в нем мало инструкций о том, как успешно добиться этого для сборки, которая требует таких привилегий, как доступ к объектной модели SharePoint. Я также видел обсуждение, предполагающее, что GAC является почти требованием из-за трудностей / проблем с CAS.
Я был в состоянии фактически развернуть сборку в папку. Проблемы безопасности, однако, были большим препятствием. Единственный способ заставить мою сборку работать (вместо того, чтобы просто делать ошибки из-за исключений) - это повысить уровень доверия web.config до <trust level="Full" originUrl="">
который не будет летать в моей среде. Я надеюсь проверить, что то, что я пытаюсь сделать, возможно, прежде чем я продолжу бороться с CAS.
Если это возможно, если у кого-то есть руководство или ресурсы, которые помогут мне изменить мою функцию для развертывания моих обработчиков событий таким образом, я был бы признателен.
3 ответа
Не повышайте уровень доверия к web.config - довольно большой молоток для крошечной проблемы. Вы должны упаковать пользовательскую политику CAS в свой WSP, чтобы предоставить вашей сборке более высокие привилегии, которые ей предоставляет web.config.
-Oisin
Один из способов добиться этого - запустить регистрацию, записать различные исключения, а затем вручную написать политику CAS. Это очень вероятностный подход и довольно болезненный.
Кажется вероятным, что все требования разрешения для любого данного метода или класса известны заранее. Если это так, то должна быть возможность написать инструмент для статического анализа вашего кода и зависимых сборок и составления необходимого файла CAS. К сожалению, я не знаю ни одного инструмента, который делает это.
Несмотря на это, сборка GAC вашей сборки кажется намного "легче", чем повышение уровня доверия.
Если я правильно понял ваш вопрос, вы хотите развернуть приемник событий списка в каталоге BIN веб-приложения.
Это невозможно в SharePoint 2010, но я не знаю, было ли это поддержано в MOSS 2007 (я думаю, что это тоже не поддерживалось).
Такое поведение разработано, потому что SharePoint внутренне использует метод System.Reflection.Assembly.Load() для загрузки сборки получателя событий. Метод Load () работает только с полностью определенными именами сборок, поэтому сборка должна находиться в глобальном кэше сборок.