Проблемы развертывания службы WCF - PullRequest
2 голосов
/ 01 сентября 2011

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

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

раздел конфигурации ...

<client>
  <endpoint address="http://123.321.123.321:8731/N3/WebsiteIntegrationService/" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IWebsiteIntegrationService" contract="AccessService.IWebsiteIntegrationService" name="WSHttpBinding_IWebsiteIntegrationService">
    <identity>
      <userPrincipalName value="myname@mydomain" />
      <dns value="webservername"/>
    </identity>
  </endpoint>
</client>

ошибка ...

Исключение переброшено в [0]: в System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (IMessage reqMsg, IMessage retMsg) в System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData & msgData, тип Int32) в System.ServiceModel.ICommunicationObject.Close (время ожидания TimeSpan) в System.ServiceModel.ClientBase 1.System.ServiceModel.ICommunicationObject.Close(TimeSpan timeout) at System.ServiceModel.ClientBase 1.Close () at System.ServiceModel.ClientBase`1.System.IDisposable.Dispose ()

и ..

Объект связи, System.ServiceModel.Channels.ServiceChannel, не может быть использован для связи, потому что он находится в состоянии Failed.
System.ServiceModel.CommunicationObjectFaptedException Void HandleReturnMessage (System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Messaging.IMessage)
Трассировка стека сервера:
в System.ServiceModel.Channels.CommunicationObject.Close (TimeSpan Тайм-аут)

... но тот же сервис все еще работает через наше локальное тестовое приложение - мы можем даже использовать внешний IP-адрес.

Может кто-нибудь указать мне правильное направление, пожалуйста?

1 Ответ

0 голосов
/ 01 сентября 2011

Адрес конечной точки должен быть тем, на котором установлена ​​служба (т. Е. Использовать порт на машине, а не внешний порт, определенный в таблице nat маршрутизатора).

У меня была похожая ситуация с веб-фермой, когда внешние вызовы выполняются через https, но внутренняя балансировка нагрузки вызывает реальный компьютер в ферме через http. Чтобы это работало, все параметры конфигурации службы (поведения, конечной точки) используют адреса http, потому что так они называются.

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