2011-10-21 9 views
2

私はnetTCPエンドポイントを使用するWCFクライアントプロジェクトを持っています。プロジェクトは別のプロジェクトによって参照されるDLLにコンパイルされます。私はそうのように、ローカルとリモートのIPエンドポイントを切り替えることのAppSettingsを使用します。私は私のAppSettingsとWCFエンドポイントを持っているところApp.config AppSettings nullを返します

public EmbeddedClient() 
    { 
     //Grab ip to use: remote or local (used for simulator) 
     String location = ConfigurationSettings.AppSettings["ipAddress"]; 
     String ip = ConfigurationSettings.AppSettings[location]; 

     //Default to localhost if no appsetting was found 
     if (ip == null) 
      ip = "localhost"; 

     String address = String.Format("net.tcp://{0}:9292/EmbeddedService", ip); 

     //Setup the channel to the service... 
     channelFactory = new ChannelFactory<IEmbeddedService>(binding, new EndpointAddress(address)); 

    } 

私のApp.configがある:

<?xml version="1.0" encoding="utf-8" ?> 
    <configuration> 
    <appSettings> 
    <add key="ipAddress" value="local"/> 
    <!-- Replace above value to "local" (Simulator) or "remote" (Harware)--> 
    <add key="local" value="localhost"/> 
    <add key="remote" value="192.168.100.42"/> 
    </appSettings> 

    <system.serviceModel> 
     <!--WCF Endpoints go here---> 
    </system.serviceModel> 
    </configuration> 

私はいつもプロジェクトにのAppSettingをコンパイルするときnullを返します。私はまた、コンパイル後にapp.configがEmbedded_DCC_Client.dll.configのような名前に変更されていることに気付きました。なぜ私のappsettingsを見つけることができないのですか?なぜそれがnullを返すのですか?ありがとう。

+0

あなたが関与(設定)ファイルを表示することはできますか。 –

答えて

7

DLLで設定ファイルを使用しようとしているようですが、それは動作しません。 がWCF DLLを参照するを参照するアプリケーションのアプリケーションファイルに、アプリケーション設定とWCF固有の設定を設定する必要があります。 Th DLLは呼び出し元のアプリケーションの設定ファイルを使用します。言い換えれば

MyWCF.dll - これはあなたのWCFのDLLです。

MyApplication.exe - これはWCF.DLLを参照するアプリケーションです。

MyApplication.exeのapp.configファイルに、アプリケーション設定とsystem.serviceModelの設定を入れます。 MyWCF.DLLは、その設定から値を読み取る必要があります。

+0

おかげさまでティム。それはうまくいった。私は、App.configがMyApplication.exe.configのような名前に変更されていることに気付きました。それはこれのようにする必要がありますか? –

+0

@RyanR - .NETコンパイラは、デフォルトでこれを行います。私はそれを上書きしたり変更したりする方法があるかどうかわかりません - そのままそのまま残します。 – Tim

3

アプリケーション設定ファイルは、起動されたアプリケーションのコンテキストから読み込まれるため、そのプロジェクトにあるか、スタートアッププロジェクトから参照する必要があります。

+0

あなたの答えDeckerに感謝しますが、私は1つしか選択できません。 –

+0

参照されたdllに設定ファイルを入れる必要はありません。スタートアップのexeだけです。 – Decker97

0

ユーティリティをインストールするために使用されているフォルダは、EXEファイルが含まれている必要があり、DLLとexe.configファイルをサポート

関連する問題