0

ポート共有を有効にするように指示されている msdn 全体を読みました。ポート共有サービスを開始する必要があり、net.tcp バインディングで「portSharingEnabled = True」を指定する必要があります。

また、net.tcp バインディングのドキュメントでは、ポート共有のデフォルト値が false と示されていることもわかりました。

しかし、VS 2013、WIN 7 マシンには、多くのサービスをホストするコンソール アプリがあり、VS から問題なく実行できます。私のサービスホストは、同じポートで 10 を超えるサービスをホストできます。私は理解するために何が欠けていますか? 何か案は ?

すべてのサービスで、このエンドポイントに続けてサービス名を使用します。

   <service name="Lookup" behaviorConfiguration="">
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:8000/"/>
          </baseAddresses>
        </host>
        <endpoint 
                        name="IEntitiesLookup"
                        binding="netTcpBinding"
                        address="LookupService"
                        contract="ILookup" />
      </service>
4

1 に答える 1

2

ポート共有についての理解をある程度クリアすることができました。しかし、これについてもっと考えていただければ幸いです。

上記のシナリオの背後にある理由を見つけることができました。プロセス内で、同じポートを共有する複数のエンドポイントをホストできます。ポート共有を有効にする必要はありません。しかし、同じポート番号でいくつかのサービスをホストしようとする別のプロセスがある場合、「既に使用されているポート」の例外が発生します。この場合、両方のサービス ホスト プロセスのすべてのエンドポイントのバインディングでポート共有を有効にし、PortSharing サービスを開始する必要があります。

これは、トランスポート層でポート番号がプロセスに関連付けられているという理解に要約されると思います。

于 2014-03-21T13:46:51.063 に答える