У меня есть служба WCF (NET 4), размещенная на IIS. Он настроен через web.config. Я просто хочу внести небольшие изменения в существующую конфигурацию в runtime. Кажется, что пользовательский сервис ServiceHostFactory/ServiceHost заставляет меня дублировать все настройки в коде. Есть трюк?Как изменить конфигурацию службы WCF, если службы, размещенные в IIS?
0
A
ответ
1
Да, вы можете иметь ServiceHostfatory
:
<%@ ServiceHost Language="C#" Debug="true"
Service="IISHost.HelloService"
CodeBehind="/App_code/HelloService.svc.cs"
Factory="MyServiceHostFactory" %>
и вы можете иметь ServiceHostFactory
что instanciates вам услугу. Потому что ваш сервис создания экземпляра «как обычно,» вы можете иметь некоторый код, который считывает -Look конфигурации XML на коде в комментариях ниже:
public class MyServiceHostFactory : ServiceHostFactory{
protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses) {
ServiceHost host = new ServiceHost(typeof(HelloService));
// add/modify the endpoints, Behaviors, ... through
// host.Description.Endpoints, host.Description.Behaviors …
return host;
}
}
С уважением
+0
Большое спасибо! Именно то, что мне нужно! – garry
Если изменить файл конфигурации во время выполнения, вы перезапустит приложение. В этом случае у вас есть два варианта: либо выполнить конфигурацию в коде, либо сохранить конфигурационную информацию в отдельном файле, но затем вам придется прочитать отдельный файл и, возможно, придется создать код для этого. Легче сделать это в коде для этого сценария, IMO :) – Tim