Я использую службу WCF для собственного размещения.В конфигурации службы я использую localhost в своих базовых адресах, к которым я подключаю свои конечные точки.При попытке подключиться к конечной точке с помощью тестового клиента WCF у меня нет проблем с подключением к конечной точке и получением метаданных с использованием имени компьютера.Проблема, с которой я сталкиваюсь, заключается в том, что клиент, сгенерированный из метаданных, использует localhost в URL-адресах конечных точек, к которым он хочет подключиться.Я предполагаю, что это потому, что localhost является URL-адресом конечной точки, опубликованным метаданными.В результате любые вызовы методов в службе завершатся сбоем, поскольку localhost на вызывающем компьютере не запускает службу.
Я хотел бы выяснить, можно ли метаданным службы опубликовать правильный URL-адрес для клиента в зависимости от клиента, который его вызывает.Например, если я запрашивал метаданные службы с машины в той же сети, что и сервер, конечной точкой должно быть net.tcp: // MYSERVER: 1234 / MyEndpoint .Если бы я запрашивал его с компьютера за пределами сети, URL-адрес должен быть net.tcp: //MYSERVER.mydomain.com: 1234 / MyEndpoint .И очевидно, что если клиент находился на той же машине, то URL мог бы быть net.tcp: // localhost: 1234 / MyEndpoint .
Это просто недостаток в договоре IMetadataExchange по умолчанию?Есть ли какая-то причина, по которой метаданные должны публиковать информацию неконтекстно?Есть ли другой способ, которым я должен настраивать свои BaseAddresses для получения нужной мне функциональности?
Спасибо,
Майк