Я не понимаю, почему что-то работает. Я настраиваю службу wcf следующим образом:
<services>
<service name="ClientCommand" behaviorConfiguration="SomeServiceBehavior">
<endpoint contract="IClientCommand" binding="netTcpBinding" BindingConfiguration="TcpPort" address="net.tcp://localhost:1304" />
</service>
</services>
BindingConfiguration и behaviorConfiguration очень просты, просто настраиваются некоторые тайм-ауты.
В своем exe я запускаю хост вот так.
_serverHost = new ServiceHost(type); // implementing IClientCommand
_serverHost.Open();
Все довольно просто и работает, я могу вызвать эту услугу с другого компьютера. Однако после прочтения другой проблемы (прослушивание сокетов tcp) у меня сложилось впечатление, что это не должно работать. Поскольку я привязываюсь к localhost, служба не должна быть доступна извне компьютера, на котором она работает?
Я проверил netstat на компьютере, и вместо этого он привязался к IP-адресу "0.0.0.0" из «127.0.0.1», объясняющего, почему он работает с другого компьютера.
Но я не понимаю, почему он переходит с localhost на «0.0.0.0»?
net.tcp://127.0.0.1/service
, он действительно будет привязан к loopback и будет недоступен извне компьютера. Однакоnet.tcp://localhost/service
будет привязан к 0.0.0.0 и будет доступен извне петли. Почему? - person Greuntesop   schedule 15.03.2013