5

TCPポートを介してWCFサービスをホストするにはどうすればよいですか。また、これらのTCPポートを介してWCFサービスをリッスンし、サービスを利用するにはどうすればよいですか。

つまり、net.tcpバインディングとは別に、TCPポートを使用してホストおよび消費する方法はありますか?

4

5 に答える 5

8

WCF では、ServiceHost クラスのインスタンスを作成し、適切なエンドポイントと公開するサービス実装を使用してそれを構成し、それを呼び出すことで、任意のサービスを自分でホストできますOpen。これは、独自のアプリケーション内からサービス (およびそのポート リスナー) をホストするため、セルフ ホスティングと呼ばれます。

別の方法として、IIS でサービスをホストすることもできますが、IIS 6 で WCF をホストすることはできますが、HTTP および HTTPS エンドポイントしかホストできないことに注意してください。IIS で TCP エンドポイントをホストする場合 (これは良い考えです)、IIS 7 が必要になります。

詳細はこちらをご覧ください

于 2009-06-29T08:52:09.050 に答える
0

(許可を得ている場合は)任意のポートを使用して、wcfサービスをホストできます。IISを使用してwcfサービスをホストする場合は多少異なりますが、セルフホスティング環境では、ポート番号をベースアドレスに追加するだけで完了です。(VistaまたはServer 2008を使用している場合、管理者権限で実行していないとき(たとえば、netshを使用しているとき)は、ポートへのアクセスを許可する必要があります)

たとえば、httpサービス(またはnet.tcp)にポート1337を使用するには、ベースアドレスに「:1337 /」を追加するだけで、残りは自動的に行われます。

于 2009-06-29T07:23:05.797 に答える
0

すべてのHTTPバインディングは、トランスポート層のTCPで機能します。したがって、HTTPバインディングとIIS.6を使用して、特定のTCPポートで実行されるWCFサービスをホストできます。

これを実現する方法についてのウォークトラフは次のとおりです。

  • 構成ファイル(またはコード)から目的のポートで実行するようにサービスを構成します。

    <service name="WCFService" behaviorConfiguration="DefaultBehaviour">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8000/WCFService" />
      </baseAddresses>
    </host>
    <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="" name="WCFService_mexEndpoint" contract="IMetadataExchange" />
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="DefaultBinding" name="WCFService_Endpoint" contract="WCFService.IService1" />
    

  • IISで、Webサイト(または仮想ディレクトリ)を作成し、baseAddressサービス構成で選択したポート(上記の例では8000)で実行するようにバインドを構成します。

上記の手順の結果は、トランスポートプロトコルとしてHTTPを使用して、トランスポート層のTCPポート8000​​で実行されるWCFサービスです。

編集:あなたはここで少し混乱していると思います。達成しようとしているのがバイナリ送信パッケージである場合、手元にある唯一の解決策は、IIS.6と互換性のないnet.tcpバインディングです。接続のTCPポートを選択できるようにしたいだけの場合は、上記の例で示したように、どのHTTPバインディングでもこれを実行でき、IIS.6で使用できます。

于 2009-06-29T08:32:19.743 に答える
0

少し遅いことはわかっています..しかし、Visual Studioに付属の「WCF Service Host」アプリを使用できると思います。

于 2010-10-13T14:57:48.017 に答える
0

このヘルプかもしれません

<services>
  <service behaviorConfiguration="configname"
    name="servicename">
    <endpoint address="" binding="netTcpBinding" bindingConfiguration="MyServiceBinding"
      name="NetTcpBindingEndpoint" bindingName="MyServiceBinding"
      contract="Interface">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>

    <endpoint address="mex" binding="customBinding" bindingConfiguration="myMexTcpBinding"
      name="MexTcpBindingEndpoint" contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="net.tcp://localhost:prot/TestService" />
      </baseAddresses>
    </host>
  </service>
</services>
于 2009-06-29T08:05:22.403 に答える