как сделать, чтобы служба WCF ссылалась на имя хоста, по которому она вызывается - PullRequest
1 голос
/ 14 марта 2011

У меня служба 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-адрес, но это может привести к ошибкам и ошибкам, например, при изменении настроек сервера или обновлении.

1 Ответ

1 голос
/ 14 марта 2011

Это должно быть решено с помощью useRequestHeadersForMetadataAddress поведения службы.

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