Инициализировать в проекте приложения службы WCF? - PullRequest
5 голосов
/ 06 мая 2011

У меня есть библиотека, которая определяет некоторую статическую переменную, такую ​​как адрес базы данных, некоторый статический метод, который выполняет форматирование данных.

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

В ASP.NET я мог инициализировать все в глобальномApplication_Start .asax, на стороне клиента Silverlight я могу инициализировать все в Application.Stml App_xml.Но как мне инициализировать в проекте приложения службы WCF?

Это приложение службы WCF будет использоваться с Silverlight, может содержать несколько служб WCF, если я инициализирую в конструкторе службы WCF, то мне придется сделать то же самое длякаждое обслуживание ....

Заранее спасибо,

Король

1 Ответ

4 голосов
/ 06 мая 2011

Есть несколько способов сделать это.Вы можете:

  1. Использовать пользовательский ServiceHostFactory, который инициализирует библиотеку перед созданием ServiceHost.
  2. Использовать статический конструктор (см. http://msdn.microsoft.com/en-us/library/k9x6w0hc.aspx) в одном из ваших классов внутриServiceLibrary и убедитесь, что это тип, который каким-то образом становится доступным (так как это вызывает статический конструктор), прежде чем вам нужно использовать библиотеку, требующую инициализации.
  3. Создайте пользовательский WCF ServiceBehavior, который выполняет инициализацию, и примените этотко всем соответствующим службам внутри ServiceLibrary. (ИМХО, самый элегантный способ ...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...