Это действительно возможно, но это не влечет за собой файл Global.asax.
Многие примеры Microsoft демонстрируют код проводки через Global.asax, но это не лучший подход, когда дело доходит до SharePoint. В идеале ваш код должен быть упакован как функция и развернут через WSP (как вы уже знаете).
Ключ заключается в реализации рассматриваемого кода в качестве HttpModule (то есть типа, реализующего интерфейс IHttpModule) и проводки его в конвейер ASP.NET, обслуживающий ваше приложение SharePoint. Грубо говоря, это шаги:
- Создайте класс, который реализует интерфейс IHttpModule.
- Внесите метод Init в ваш HttpModule; это вызывается, когда HttpApplication (в данном случае, SPHttpApplication) настроен, и это дает вам возможность выполнять обработку, делегировать события события для других событий конвейера и т. д.
- Создайте SPFeatureReceiver, который будет добавлять и удалите свой HttpModule из целевых файлов web.config при активации и деактивации, соответственно. Это выполняется с использованием типа SPWebConfigModification для обновления узла <httpModules> в целевых файлах web.config.
- Пакет все как функция и развертывание через WSP.
Для получения дополнительной информации о разработке HttpModule см. http://msdn.microsoft.com/en-us/library/ms227673.aspx. Дополнительные сведения о типе SPWebConfigModification см. В разделе http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebconfigmodification.aspx.
Результат: класс, который может обрабатывать запуск приложения и развертывается через функцию. Никаких ручных файлов не требуется.
Я успешно использовал это в нескольких сценариях - совсем недавно с помощью специального кэширующего провайдера (IVaryByCustomHandler), который должен был зарегистрироваться для обратных вызовов с помощью SPHttpApplication при его запуске.
Хотя ваш вопрос немного старше, я надеюсь, что это поможет!