Вопрос

Мне интересно, есть ли хороший способ подключиться к Application_Start сайта SharePoint 2007 при разработке функции?Я знаю, что могу напрямую редактировать файл Global.asax в корне сайта, но есть ли способ сделать это, чтобы он был развернут с этой функцией?

Спасибо!

Это было полезно?

Решение

Это действительно возможно, но это не касается файла Global.asax.

Многие примеры Microsoft демонстрируют подключение кода через Global.asax, но это не лучший подход, когда дело касается SharePoint.В идеале ваш код должен быть упакован как функция и развернут через WSP (как вы уже знаете).

Ключ заключается в реализации рассматриваемого кода как HttpModule (т. е. типа, реализующего интерфейс IHttpModule) и подключении его к конвейеру ASP.NET, обслуживающему ваше приложение SharePoint.Грубо говоря, это следующие шаги:

  1. Создайте класс, реализующий интерфейс IHttpModule.
  2. Реализуйте метод Init в своем HttpModule;он вызывается при настройке HttpApplication (в данном случае SPHttpApplication) и дает вам возможность выполнять обработку, подключать делегатов событий для других событий конвейера и т. д.
  3. Создайте SPFeatureReceiver, который будет добавлять и удалять ваш HttpModule из целевых файлов web.config при активации и деактивации соответственно.Это выполняется с использованием типа SPWebConfigModification для обновления узла <httpModules> в целевых файлах web.config.
  4. Упакуйте все как функцию и разверните через WSP.

Дополнительную информацию о разработке HttpModule см. http://msdn.microsoft.com/en-us/library/ms227673.aspx.Дополнительные сведения о типе SPWebConfigModification см. http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebconfigmodification.aspx.

Результат:класс, который может обрабатывать запуск приложения и может быть развернут через Feature.Никакого ручного взлома файлов не требуется.

Я успешно использовал это в ряде сценариев — последний раз с собственным поставщиком кэширования (IVaryByCustomHandler), которому нужно было зарегистрироваться для обратных вызовов с помощью SPHttpApplication при его запуске.

Хотя ваш вопрос немного старше, надеюсь, это поможет!

Другие советы

Я чувствую, что это невозможно.Application_Start вызывается средой выполнения при запуске движка asp.net, поэтому, скорее всего, не может быть никакого способа подключить обработчик за пределами изменения Global.asax - например.перехватчик должен быть декларативным и постоянным, поскольку он должен пережить остановку/выгрузку приложения.Итак, если вам нужно написать в global.asax, я думаю, вы могли бы написать Feature EventReceiver для выполнения модификации.

Помимо этого, можете ли вы дать более подробную информацию о том, почему?Возможно, есть и другие углы атаки.Идея изменения global.asax на лету вызывает у меня тошноту.Это не может быть хорошо.

Ойсин

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top