У меня служба WCF, запущенная кодом (путем создания BasicHttpBinding, ServiceHost и т. Д.).Однако WSDL, публикуемый этой службой, имеет жестко закодированное имя хоста.Т.е. я сообщаю службе, что она работает на example.com, и WSDL будет иметь импорт, такой как
<xsd:import schemaLocation="http://example.com:8018/MyService" etc etc>
Теперь, из самого example.com, я могу обратиться к этой службена http://localhost:8018/MyService
вместо example.com
.Однако импорт xsd будет по-прежнему ссылаться на предварительно настроенный адрес.
Нет ли способа заставить службу использовать тот сервер, на котором была вызвана страница WSDL внутри WSDL?Или просто использовать относительный адрес?(при условии, что клиенты это поддерживают; на самом деле я не уверен)
Причина, по которой это важно, заключается в том, что служба адресована серверами в одном и том же парке серверов через свой внутренний IP-адрес, но внешними службами через его внешнийИмя хоста.Мы бы хотели, чтобы весь трафик не выходил из подсети и снова в нее просто потому, что мы не можем заставить WCF понять, что у него могут быть разные имена хостов.Наше текущее решение - изменить файл hosts
во внутренних клиентах, чтобы внешнее имя хоста указывало на внутренний IP-адрес, но это может привести к ошибкам и ошибкам, например, при изменении настроек сервера или обновлении.