Работая над проектом SharePoint, я пытаюсь использовать Unity в качестве контейнера внедрения зависимостей.
Моя первая идея запустить этот контейнер - использовать global.asax, как описано в рекомендациях P & P:
http://webclientguidance.codeplex.com/releases/view/17134#DownloadId=43305
В этих рекомендациях рекомендуется вручную редактировать файл global.asax, чтобы он наследовал SPUnityHttpApplication.
<%@ Application Language="C#" Inherits="Unity.SharePoint.SPUnityHttpApplication" %>
Редактирование этого файла вручную невозможно в корпоративных средах, так как у нас есть несколько сред (DTAP), и у всех них есть несколько внешних серверов, которые требуют ручных действий.
Я не могу найти способ развернуть файл global.asax с помощью функции или wsp или чего-либо еще, потому что global.asax находится в корне веб-приложения, а sharepoint развертывает другие файлы в папке куста / 14, чтобы вы могли не удается получить доступ к корневому каталогу веб-приложения.
Альтернативы, которые я рассмотрел, - SharePointServiceLocator . эта функциональность делает почти то, что я хочу. но он может разрешать только те классы, которые имеют конструктор по умолчанию. таким образом, я не могу по цепочке разрешить все мои реализации, используя инъекцию конструктора. Я нашел сообщение о том, как изменить указатель службы, чтобы использовать единство, но, кажется, это не работает должным образом, если вы читаете комментарии.
Мою проблему можно исправить, исправив 1 из этих 2 основных проблем:
- Не устраивайте единство в global.asax, но тогда где и как?
- Развернуть global.asax в sharepoint? возможно?