WCF не привязан к правильному IP-адресу - PullRequest
3 голосов
/ 30 сентября 2008

У нас есть служба WCF, развернутая на сервере Windows 2003, с некоторыми проблемами. Конфигурация использует wsHttpBinding, и мы указываем IP-адрес. Службы размещаются службой Windows.

Когда мы запускаем службу, большую часть времени она получает неправильный IP-адрес. Несколько раз он привязывался к правильному адресу только для того, чтобы сбросить эту привязку и перейти на другой адрес (их 2), связанный с сетевой картой после непродолжительной обработки.

В настоящее время используется порт 80 (мы настроили IIS для привязки только к 1 адресу через httpcfg), хотя мы пробовали использовать разные порты с одинаковыми результатами.

Когда служба Windows начинает размещать службу WCF, свойства показывают, что она привязана к правильному адресу; однако tcpview показывает, что он действительно прослушивает неправильный адрес.

Вот часть конфигурации, которая устанавливает baseAddress. Тот, к которому привязывают, в конечном итоге оказывается .4 вместо .9

<services>
    <service name="Service.MyService"
             behaviorConfiguration="serviceBehavior">
        <host>
            <baseAddresses>
                <add baseAddress="http://xx.xx.xx.9:80/" />
            </baseAddresses>
        </host>
        <endpoint address="MyService"
                  binding="wsHttpBinding"
                  bindingConfiguration="WSHttpBinding_IMyService"
                  contract="Service.IMyService" />
        <endpoint address="mex"
                  binding="mexHttpBinding"
                  contract="IMetadataExchange" />
    </service>
</services>
  • Есть ли какая-то другая конфигурация, которую нужно установить?
  • Есть ли инструмент, который может помочь отследить, где он привязан к неправильному адресу?

Ответы [ 6 ]

1 голос
/ 29 апреля 2009

У нас была та же проблема, и эта функция помогла нам решить нашу проблему:

http://msdn.microsoft.com/en-us/library/system.servicemodel.hostnamecomparisonmode.aspx

Надеюсь, эта помощь.

1 голос
/ 01 октября 2008

Проблема, похоже, связана с МКС. Вот описание ошибки, которую вы получаете от http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/ddf72ae0-aa1e-48c9-88d1-10bae1e87e4f.mspx?mfr=true

Эта ошибка регистрируется в журнале событий, когда HTTP.sys анализирует список включения IP и обнаруживает, что все записи в списке недопустимы. Если это происходит, как следует из описания в таблице 11.15, HTTP.sys прослушивает все IP-адреса.

Вы также можете проверить следующую ветку, в которой говорится о похожей проблеме http://www.webhostingtalk.com/showthread.php?t=534174

Надеюсь, это поможет.

1 голос
/ 30 сентября 2008

Ваша конфигурация WCF выглядит нормально для меня. Это может быть связано с порядком привязки ваших сетевых карт. Убедитесь, что сетевой адаптер с правильным адресом является первым. Вот статья, в которой обсуждается, как устанавливать и просматривать заказы на обязательное связывание:

http://theregime.wordpress.com/2008/03/04/how-to-setview-the-nic-bind-order-in-windows/

0 голосов
/ 05 октября 2010

BaseAddress игнорируется. Вам необходимо установить заголовок узла под IIS .

0 голосов
/ 01 октября 2008

Еще один кусочек информации. Если мы изменим привязку для использования NetTcp вместо WsHttp, он будет привязан к правильному адресу на порту 80. При изменении его на WsHttp он вернется к неправильному IP-адресу.

0 голосов
/ 01 октября 2008

Дополнительная информация. Я полностью удалил IP-адрес xx.xx.xx.4 из сетевой карты и отключил IIS. Теперь, когда я пытаюсь запустить службу, происходит сбой, и я нахожу это в журнале системных событий.

Description:
Unable to bind to the underlying transport for xx.xx.xx.4:80. The IP Listen-Only list may contain a reference to an interface which may not exist on this machine.  The data field contains the error number.

Мой файл конфигурации по-прежнему имеет базовый адрес xx.xx.xx.9.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...