1

私は WCF DataServices (OData) にかなり慣れていないので、URI をハードコーディングせずにクライアントでエンティティ コンテナーをインスタンス化する最良の方法を知る必要があります。MSDN のすべての例では、クライアントのインスタンス化について次のように説明されているようです。

Uri uri = new Uri("http://www.someservice.svc");
DataServiceContext svc = new DataServiceContext(uri);

ただし、このようにサービス アドレスをハードコーディングしても意味がないため、どこかで何かが欠けているに違いないことはわかっています。たとえば、開発からテスト、QA、本番環境に移行するときに、各環境の URI が異なる可能性が高い場合、どのようにアドレスを動的に変更しますか?

これについての洞察に感謝します。

4

2 に答える 2

4

あなたの DataService URL をあなたのSettingsファイルや単なるプレーンなどに入れますapp.config:

Uri uri = new Uri(ConfigurationManager.AppSettings["ServiceURI"]);
DataServiceContext svc = new DataServiceContext(uri);

そしてあなたのapp.config(またはweb.configウェブアプリの):

<appSettings>
  <add key="ServiceURI" value="http://www.someservice.svc" />
</appSettings>

または、データベース構成テーブルから取得します.....またはまたはまたはまたは...たくさんの選択肢があります!

URI は単なる文字列です。お持ちのほぼすべての構成ソースから取得できます。

于 2010-06-25T14:29:46.737 に答える
1

Silverlight アプリを使用している場合は、application.current.host を使用して xap の URI にアクセスできます。
次に、相対 URI を追加してサービス URI を取得できます。

URI ベース = application.current.host; Uri relService = new Uri("..\someservice.svc", System.UriKind.Relative);

Uri サービス = 新しい Uri(base, relService); DataServiceContext svc = new DataServiceContext(サービス);

于 2010-06-25T15:24:50.910 に答える