Распространенная проблема для WCF заключается в том, как имя хоста разрешается в wsdl для ссылок на другие файлы. Проблема в том, что имя компьютера помещается в wsdl для связывания других файлов wsdl, поэтому, если вы посетите http: //myhost/service.svc, он может указывать на остальную часть wsdl в другом месте, т.е. http: //mypc/service.svc? wsdl, что, очевидно, вы не можете видеть извне.
Для этого уже есть несколько решений, и это наиболее распространенное. Где вы можете настроить заголовок хоста.
Мой вопрос в том, как я могу обойти это при использовании внешнего IP-адреса. Я подключаюсь к головному офису клиентов со своего веб-сайта для получения данных, он не настроен с помощью DNS и т.д., а IP перенаправляет на машину внутренне. Есть ли способ заставить компьютер, на котором размещается WCF, представлять внешний адрес в файлах wsdl, а не имя компьютера?
Я использую SSL для подключения, что может иметь значение (как и в случае с заголовками хоста).





Вам необходимо настроить заголовок хоста для secureBingings веб-сайта в IIS.
Вот статья про WCF WSDL & xsd: import schemaLocations ссылка на имя локального компьютера, а не имя домена при размещении в IIS
Вы пытались добавить внешний IP-адрес в заголовок хоста, например. \ Securebindings "443: ip.ip.ip.ip"?
Да, вы можете установить IP-адрес в качестве заголовка хоста. Просто убедитесь, что внешний IP-адрес действительно распознается внутри. Я усвоил это на собственном горьком опыте, когда в одном из наших проектов мы использовали ISA Server в качестве прокси.
Если вы когда-либо сталкивались с такой ситуацией и по-прежнему настаиваете на использовании внешнего IP-адреса в качестве заголовка хоста, то единственный вариант - добавить имя компьютера веб-службы в файл hosts.
Спасибо за ответ, но это касается только сценариев, в которых используется альтернативное имя хоста. Это не решает вопрос об использовании IP-адресов для доступа к веб-сервису.