如何在app.config中读取xml服务声明中的appseting键

时间:2011-01-18 17:08:36

标签: wcf reference app-config

我正在VS 2010和.NET 4.0中开发WCF服务。

我正在创建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 个答案:

答案 0 :(得分:1)

你无法开箱即用。

您可以在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配置系统不支持。