0

私は、会社の基幹業務 (LOB) アプリである Windows 8 ストア アプリを作成しました。アプリは、basicHttpBinding を使用して、アプリケーションがホストする WCF サービスにアクセスします。サービスへの接続に問題はなく、アプリの実行中にサービスからデータを取得できます。

アプリが指すサービス URI をプログラムで変更しようとすると、問題が発生します。まったく同じ方法で設定された別の WCF サービスに変更すると (UAT 環境から PROD 環境に変更しています)、次の例外が発生します。

Content Type text/xml; charset=utf-8 was not supported by service http://server/service.  The client and service bindings may be mismatched.

編集- 言い忘れましたが、これは、Web サービス クライアントが既に指している URI を変更しようとした場合にも発生します。

これをデバッグしようとしている最中に、クライアントの構築をデバッグすると、アプリが問題なくサービスに接続することに気付きました。

また、クライアントの構築とサービス URI の変更の間に何らかの遅延を入れても、問題なく動作することもわかりました。

これは構築コードです。遅延をコメントアウトすると機能しません。コメントを外すと機能します。

private async void CreateWebServiceClient()
{
    this.StockLevelsClient = new StockLevelsWebservice.StockLevelsServiceClient();
    await Task.Delay(TimeSpan.FromMilliseconds(1));
    this.StockLevelsClient.Endpoint.Address = new System.ServiceModel.EndpointAddress(_uri);
}

遅延はありますが、なぜそれが機能するのかを理解したいと思います...そして、危険な回避策に頼ってそれを機能させる方法.

4

0 に答える 0