Путаница локального хоста конечной точки службы WCF

Я не понимаю, почему что-то работает. Я настраиваю службу 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»?


person Greuntesop    schedule 15.03.2013    source источник
comment
Я копнул немного глубже, только чтобы запутаться еще больше. Если я использую net.tcp://127.0.0.1/service, он действительно будет привязан к loopback и будет недоступен извне компьютера. Однако net.tcp://localhost/service будет привязан к 0.0.0.0 и будет доступен извне петли. Почему?   -  person Greuntesop    schedule 15.03.2013


Ответы (1)


Net.tcp не ограничивается общением на одной машине, возможно, вы думаете о net.pipe? Относительно 0.0.0.0: Как определяется файл хоста на машине, на которой запущена служба? Здесь есть хорошая статья о WCF в целом.

person Jocke    schedule 15.03.2013
comment
Привет, я не говорю, что net.tcp ограничен общением на одной машине. Я говорю, что если вы используете net.tcp: // localhost: ... он должен быть привязан к адресу обратной петли и быть недоступным извне компьютера. Но это. - person Greuntesop; 15.03.2013