2011-01-18 9 views
1

私はVS 2010と.NET 4.0でWCFサービスを開発しています。app.configのxmlサービス宣言でappsetingキーを読み取る方法

私はapp.configファイルを作成しています。サーバーのベースアドレスを一度指定したいとします。私は私のようなサービス/ホスト/ baseaAddresssesにそのキーを参照することができますどのように知っていただきたいと思い

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

::私はとのAppConfigセクションにそれを宣言した

<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

あなたはそれを箱から出すことはできません。

あなたの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のコードでそれを設定する(クライアント側のサンプルで明示的にベースアドレスを指定してどちらか - サービス側では、あなたが必要)あなたのServiceHost.AddServiceEndpoint()を呼び出すために:

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

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

あなたはapp.config内部の別のコンフィグ設定を参照することはできません - .NETの設定システムはちょうどそれをサポートしていません。

+0

これはちょっと面白いです。私はXAMLがそれをサポートしていると言います。スタイルを宣言し、それを参照することができます。私は同じテクニックを適用したかったのです。ご回答有難うございます。 – JoanComasFdz

+1

@unexpectedkas:はい、XAMLは.NETの設定ではありません。これは多くの点でより高度です。 –

関連する問題