5

WCF サービスでは、エンドポイント バインディングを wsHttpBinding として設定しています。ただし、Visual Studio を使用してサービス参照を追加すると、クライアントの 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>
4

1 に答える 1

8

-- Ladislav Mrnka は、これで私を正しい方向に向けてくれました。どうもありがとう。

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

サービス コントラクト (IMyService) を WCF サービス アプリケーションに配置する代わりに、別のドメイン プロジェクトに配置して、すべてのインターフェイスを保持し、さまざまなプロジェクトで再利用できるようにしました。私の WCF Service Application .web.config では、サービス名が実装ではなくインターフェイス プロジェクトを指していました。これにより、VS2010 (svcutil.exe) がデフォルト設定に基づいてプロキシと構成を作成しました (machine.config (WCF 4 の場合) にあると思います)。

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

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

于 2011-01-05T17:56:19.540 に答える