2011-01-04 9 views
5

WCFサービスでは、wsHttpBindingとして設定されたエンドポイントバインディングがあります。しかし、Visual Studioを使用してサービス参照を追加すると、クライアントのapp.configにバインディングがbasicHttpBindingとして表示されます。誰がなぜこれが起こっているのか知っていますか?wsHttpBindingがクライアントapp.configのbasicHttpBindingに変更されました

サービスのマイエンドポイントweb.config(IIS 7.5でホストされています)。 baseAddresses

<endpoint address="" 
    binding="wsHttpBinding" 
    bindingConfiguration="wsHttpServiceBinding" 
    contract="MyProject.IMyService" /> 

クライアントのapp.configからアドレスを取得します:

<client> 
    <endpoint address="http://example.com/MyService.svc" 
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_MyService" 
    contract="Service.MyService" name="BasicHttpBinding_MyService" /> 
</client> 
+3

ほとんどの場合、設定は使用されておらず、クライアントはデフォルト設定から構築されている可能性があります。サービス要素の名前が、名前空間を含むServicHostディレクティブ(.svcファイル)のサービスタイプと同じであることを確認します。 WSDLでこれを確認することもできます。 –

+0

私はそれをシンプルに保つためにしようとしていたので、これをポストで言及しなかったが、私は2つのバインディングを持っていた。 – Cragly

答えて

7

は - ラディスラフMrnkaはこれで正しい方向に私を指摘しました。どうもありがとう。

私は答えがまっすぐであるかもしれないと思ったので、私は質問を単純なままにしようとしました。しかし、これは私の問題に対する答えがどこにあるかということで、私は少し詳細に私のセットアップを説明していたはずです。

私のサービス契約(IMyService)をWCFサービスアプリケーションに常駐させるのではなく、別のドメインプロジェクトでそれを持っていました。私のWCFサービスアプリケーションの.web.configでは、実装ではなくインターフェイスプロジェクトを指すサービス名を持っていました。これにより、VS2010(svcutil.exe)がデフォルト設定に基づいてプロキシと設定を作成しました(私はmachine.config(WCF 4の場合)に存在します)。

この問題を遭遇する可能性がある他の誰かを要約すると、間違った場所を指すサービス名でした。サービス名が実装(通常はWCFサービスアプリケーション - MyProject.MyService)を指し、エンドポイント契約がサービス契約(WCFサービスアプリケーションまたは外部プロジェクト - MyProject.IMyServiceまたはAnotherProject.Interfaces.IMyService)を指していることを確認します)。

ご協力いただきありがとうございます。

関連する問題