Развертывание сборки приемника событий SharePoint в BIN веб-приложения - PullRequest
3 голосов
/ 14 декабря 2009

Можно ли успешно развернуть сборку, содержащую обработчики событий, для пользовательской функции списка SharePoint (таким образом, классов, которые зависят от сборки Microsoft.SharePoint) в корзину веб-приложения вместо GAC?

Возможность сделать это, безусловно, присутствует в разметке XML в файле manifest.xml моей функции. Тем не менее, я видел несколько ссылок на то, что развертывание политик CAS для сборки является обязательным, и в нем мало инструкций о том, как этого добиться для сборки, требующей таких привилегий, как доступ к объектной модели SharePoint. Я также видел обсуждение, предполагающее, что GAC является почти требованием из-за трудностей / проблем с CAS.

Мне удалось развернуть сборку в папке. Проблемы безопасности, однако, были большим препятствием. Единственный способ заставить мою сборку работать (вместо того, чтобы просто делать ошибки из-за исключений) - это повысить уровень доверия web.config до <trust level="Full" originUrl="">, который не будет работать в моей среде. Я надеюсь проверить, что то, что я пытаюсь сделать, возможно, прежде чем я продолжу бороться с CAS.

Если это возможно, если у кого-то есть руководство или ресурсы, которые помогут мне изменить мою функцию для развертывания моих обработчиков событий таким образом, я был бы признателен.

Ответы [ 3 ]

1 голос
/ 16 декабря 2009

Один из способов добиться этого - запустить регистрацию, записать различные исключения, а затем вручную написать политику CAS. Это очень вероятностный подход и довольно болезненный.

Кажется вероятным, что все требования к разрешениям для любого данного метода или класса известны заранее. Если это так, то должна быть возможность написать инструмент для статического анализа вашего кода и зависимых сборок и составления необходимого файла CAS. К сожалению, я не знаю ни одного инструмента, который делает это.

Несмотря на то, что ваша сборка GAC кажется намного «легче», чем повышение уровня доверия.

1 голос
/ 28 сентября 2011

Если я правильно понял ваш вопрос, вы хотите развернуть приемник событий списка в каталоге BIN веб-приложения.

Это невозможно в SharePoint 2010, но я не знаю, поддерживалось ли это в MOSS 2007 (я полагаю, что оно также не поддерживалось).

Такое поведение является заданным, поскольку SharePoint внутренне использует метод System.Reflection.Assembly.Load () для загрузки сборки получателя событий. Метод Load () работает только с полностью определенными именами сборок, поэтому сборка должна находиться в глобальном кэше сборок.

1 голос
/ 15 декабря 2009

Не повышайте уровень доверия к web.config - довольно большой молот для маленькой проблемы. Вы должны упаковать пользовательскую политику CAS в свой WSP, чтобы предоставить вашей сборке более высокие привилегии, которыми наделен web.config.

-Oisin

...