2015-10-23 4 views
0

У меня есть служба WCF (NET 4), размещенная на IIS. Он настроен через web.config. Я просто хочу внести небольшие изменения в существующую конфигурацию в runtime. Кажется, что пользовательский сервис ServiceHostFactory/ServiceHost заставляет меня дублировать все настройки в коде. Есть трюк?Как изменить конфигурацию службы WCF, если службы, размещенные в IIS?

+0

Если изменить файл конфигурации во время выполнения, вы перезапустит приложение. В этом случае у вас есть два варианта: либо выполнить конфигурацию в коде, либо сохранить конфигурационную информацию в отдельном файле, но затем вам придется прочитать отдельный файл и, возможно, придется создать код для этого. Легче сделать это в коде для этого сценария, IMO :) – Tim

ответ

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