Как прочитать ключ appseting в объявлении сервиса xml в app.config - PullRequest
1 голос
/ 18 января 2011

Я разрабатываю службу WCF в VS 2010 и .NET 4.0.

Я создаю файл app.config и хочу один раз указать базовый адрес для сервера.

Я объявил его в разделе appConfig как:

<appSettings>  
  <add key="base_address" value="net.tcp://localhost:5050/Service1/"/>
</appSettings>

Я хотел бы знать, как я могу ссылаться на этот ключ в service / host / baseaAddressses, например:

<service
    name="WcfService_callbacks_tcp_auth_username.Service1"
    behaviorConfiguration="beh_auth">
    <host>
      <baseAddresses>
        <add baseAddress="!!!here_the_key!!!"/>
      </baseAddresses>
    </host>
</service>

Ив разделе клиент / конечная точка, например:

<client>
  <endpoint address="!!!here_the_key!!!" binding="netTcpBinding"
            bindingConfiguration="NetTcpBinding_IService1" contract="Service1.IService1"
            name="NetTcpBinding_IService1">
            <identity>
                <certificate encodedValue="..." />
            </identity>
   </endpoint>
</client>

Есть ли в любом случае это сделать?

Спасибо.

1 Ответ

1 голос
/ 18 января 2011

Вы не можете сделать это из коробки.

Либо вы явно указываете базовый адрес в вашей конфигурации WCF

<service
    name="WcfService_callbacks_tcp_auth_username.Service1"
    behaviorConfiguration="beh_auth">
    <host>
      <baseAddresses>
        <add baseAddress="net.tcp://localhost:5050/Service1"/>
      </baseAddresses>
    </host>
</service>

, либо читаете его из кода app.config в коде иустановите его в коде WCF (пример для клиентской стороны - на стороне службы вам нужно позвонить .AddServiceEndpoint() на вашем ServiceHost):

string customBaseAddress = ConfigurationManager.AppSettings["base_address"];

YourServiceClient proxy = 
     new YourServiceClient("NetTcpBinding_IService1",  // endpoint name in config
                           customBaseAddress);         // custom URL

Вы не можете ссылаться на другие параметры конфигурации внутри app.config -система конфигурации .NET просто не поддерживает это.

...