Невозможно связаться со службой WCF с этой настройкой: IIS со службой WCF за Microsoft Forefront/TMG с сертификатом SSL

У меня есть служба WCF, работающая за Microsoft Forefront/TMG. Служба находится в IIS, используя порт 80. TMG прослушивает порт 443. TMG имеет установленный сертификат SSL. Настройка TMG выполняется нашим ИТ-отделом. Я могу получить доступ к https://mypublicsite:443/myservice.svc и https://mypublicsite:443/myservice.svc?wsdl. Однако при использовании тестового клиента Visual Studio: WCFTestClient.exe (или любого клиента) - я получаю тайм-аут при выполнении вызова с этой ошибкой:

Не удалось вызвать службу. Возможные причины: Служба отключена или недоступна; конфигурация на стороне клиента не соответствует прокси; существующий прокси недействителен. Обратитесь к трассировке стека для более подробной информации. Вы можете попытаться восстановиться, запустив новый прокси-сервер, восстановив конфигурацию по умолчанию или обновив службу.

Я застрял прямо сейчас. При доступе к сервису через http://myinternalsite:80/myservice.svc изнутри сети все работает. У кого-нибудь есть решение? Или способ найти решение?


person Morten Frederiksen    schedule 23.05.2012    source источник


Ответы (3)


Возможно:

  • Вас блокирует брандмауэр (попробуйте telnet)
  • Что-то не так с настройкой TMG (попробуйте получить доступ к сервису wsdl из браузера)
  • Что ваша конфигурация wcf настроена на использование/не использование безопасности транспорта (убедитесь, что файлы конфигурации сервера и клиента совпадают)
person Shiraz Bhaiji    schedule 23.05.2012

Нашел решение. Получил fiddler2 для отображения содержимого сетевых пакетов. И это привело меня к решению. Причиной 500 ответов было несоответствие WCF AddressFilter. Это было исправлено путем добавления этого в мой сервис: [ServiceBehavior(AddressFilterMode=AddressFilterMode.Any)]

Эта статья помогла мне: http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/b5ae495b-f5fb-4eed-ae21-2b2280d4fec3/

person Morten Frederiksen    schedule 24.05.2012

Я получил эту ошибку, когда у меня не было нулевого значения в Enum, отправленном службой. При использовании Enums убедитесь, что отправляемое значение определено. По умолчанию – 0.

[DataContract]
public enum MyEnum // No name for value 0 in this enum
{
    [EnumMember]
    Something1=1,
    [EnumMember]
    Something2=2,   
}
person user1500436    schedule 21.01.2013