1

webHttpBinding と netTcpBinding の両方からアクセスできる WCF サービスを作成しようとしています。Java クライアントを介して webHttpBinding にアクセスできるようにすることに成功しました。現在、netTcpBinding を機能させるために取り組んでいます。

このように構成をセットアップしました。

<system.serviceModel>
  <behaviors>
    <endpointBehaviors>
      <behavior name="httpBehavior">
        <webHttp/>
      </behavior>
    </endpointBehaviors>
    <serviceBehaviors>
      <behavior name="">
        <serviceMetadata httpGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="true" />
      </behavior>
    </serviceBehaviors>
  </behaviors>
  <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  <services>
    <service name="MR_Jukebox_Service.JukeboxService">
      <host>
        <baseAddresses>
          <add baseAddress="http://localhost:8732/Design_Time_Addresses/MR_Jukebox_Service/"/>
          <add baseAddress="net.tcp://localhost:8523/Design_Time_Addresses/MR_Jukebox_Service/net/"/>
        </baseAddresses>
      </host>
      <endpoint address=""
                behaviorConfiguration="httpBehavior"
                binding="webHttpBinding"
                contract="MR_Jukebox_Service.IJukeboxService" />
      <endpoint address="mex"
                binding="mexHttpBinding"
                contract="MR_Jukebox_Service.IJukeboxService" />
      <endpoint address="net.tcp://localhost:8523/Design_Time_Addresses/MR_Jukebox_Service/net"
                binding="netTcpBinding"
                bindingConfiguration=""
                contract="MR_Jukebox_Service.IJukeboxService" />
    </service>
  </services>
</system.serviceModel>

同じソリューションで、netTcpBinding に接続したいテスト アプリケーションがあり、[サービス参照] を右クリックして [サービス参照の追加...] を選択しました。「Discover」をクリックすると、サービスが見つかります。

「http://localhost:8732/Design_Time_Addresses/MR_Jukebox_Service」のダウンロード中にエラーが発生しました。リクエストは HTTP ステータス 404: Not Found で失敗しました。メタデータに解決できない参照が含まれています: 'http://localhost:8732/Design_Time_Addresses/MR_Jukebox_Service'。メッセージを受け入れることができるhttp://localhost:8732/Design_Time_Addresses/MR_Jukebox_Serviceでリッスンしているエンドポイントがありませんでした。これは、多くの場合、アドレスまたは SOAP アクションが正しくないことが原因です。詳細については、InnerException (存在する場合) を参照してください。リモート サーバーがエラーを返しました: (404) 見つかりません。現在のソリューションでサービスが定義されている場合は、ソリューションを構築して、サービス参照を再度追加してみてください。

しかし、netTcpBinding へのサービス参照を作成するために netTcpBinding を表示することもできません。

おそらくかなり単純なことなので、誰かが私が間違っていることを見ることができるかどうか疑問に思っていましたが、WCFの経験が不足しているため、気づいていません。

事前に助けてくれてありがとう。

4

2 に答える 2

3

mex エンドポイントを次のように変更してみてください。

<endpoint address="mex"
          binding="mexHttpBinding"
          contract="IMetadataExchange" />

mex エンドポイントにサービスのコントラクトを使用していましたが、これはうまくいかないと思います。

NetTcpBinding に同様のものを設定できます。

<endpoint address="net.tcp://localhost:8523/Design_Time_Addresses/MR_Jukebox_Service/net/mex"
          binding="mexTcpBinding"
          contract="IMetadataExchange" />
于 2011-08-04T07:22:25.840 に答える
2

Java クライアントを介して webHttpBinding にアクセスできるようにすることに成功しました。現在、netTcpBinding を機能させるために取り組んでいます。

netTcpBinding を Java クライアントで動作させようとしていますか? なぜなら、netTcpBindingは .net クライアントでのみ機能するからです。

NetTcpBinding は相互運用のために設計されたものではなく、サーバーとクライアントの両方が .net である場合のパフォーマンスのために設計されています。

于 2011-08-04T11:54:11.473 に答える