Ответ 1
Что предлагал @KirkWoll, но только если вы работаете в IIS и только в статическом методе AppInitialize в App_Code. Если вы хотите выполнить инициализацию для каждой службы, если у вас есть другой метод AppInitialize или если вы не находитесь под IIS, у вас есть следующие варианты:
- Если вы используете .NET Framework 4.5 и под IIS: вы можете использовать метод настройки службы, который будет вызываться при запуске службы. Дополнительная информация на http://msdn.microsoft.com/en-us/library/hh205277(v=vs.110).aspx.
- Если вы самостоятельно размещаете свою услугу, вы контролируете запуск службы (вызов
ServiceHost.Open()
, поэтому вы можете ее инициализировать там - Если вы находитесь под IIS, а не на 4.5, вы можете использовать хост службы factory и настраиваемый хост службы, который будет вызываться при открытии хоста службы. В этот момент вы можете выполнить свою инициализацию. Вы можете найти больше о фабриках хостов-служб на http://blogs.msdn.com/b/carlosfigueira/archive/2011/06/14/wcf-extensibility-servicehostfactory.aspx.
Пример пользовательского factory показан ниже:
public class MyFactory : ServiceHostFactory
{
protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
{
ServiceHost host = base.CreateServiceHost(serviceType, baseAddresses);
host.Opening += new EventHandler(host_Opening);
return host;
}
void host_Opening(object sender, EventArgs e)
{
// do initialization here
}
}
}