何かがうまくいかない理由は混乱しています。WCFサービスエンドポイントローカルホストの混乱
<services>
<service name="ClientCommand" behaviorConfiguration="SomeServiceBehavior">
<endpoint contract="IClientCommand" binding="netTcpBinding" BindingConfiguration="TcpPort" address="net.tcp://localhost:1304" />
</service>
</services>
BindingConfigurationとbehaviorConfigurationはいくつかのタイムアウトを設定し、非常に単純です:私はこのようなWCFサービスを構成しています。
私のexeでは、私はこのようなホストを開始します。
_serverHost = new ServiceHost(type); // implementing IClientCommand
_serverHost.Open();
これはすべて非常に簡単で動作します。私はこのサービスを別のPCから呼び出すことができます。しかし、別の問題(TCPソケットでリッスンしている)を読んだあと、動作してはいけないという印象を受けます。 localhostにバインドしているので、サービスは実行中のPCの外部からアクセスできないはずですか?
私はPC上でnetstatをチェックしましたが、なぜそれが別のPCから動作するのかを説明する "127.0.0.1"の代わりにIPアドレス "0.0.0.0"にバインドしました。
しかし、なぜそれがlocalhostから "0.0.0.0"になるのか分かりません。
少し深く掘り下げて、もっと混乱させました。 'net.tcp:// 127.0.0.1/service'を使用すると、実際にループバックにバインドされ、PCの外部から到達できなくなります。しかし、 'net.tcp:// localhost/service'は0.0.0.0にバインドされ、ループバックの外側から到達可能です。どうして? – Greuntesop