Может быть, я просто не понимаю, но у меня есть служба, развернутая на машине IIS 6.У этой машины есть адрес локальной сети и общедоступный интернет-адрес.
Как же я могу публиковать эту службу с обоими доступными?
Сначала я подумал: ничего страшного, 2 конечных точки.Итак, у меня есть
<endpoint
address="Address 1"
binding="wsHttpBinding"
bindingConfiguration="DefaultBindingConfiguration"
name="RemoteEndpoint" />
<endpoint
address="Address 2"
binding="wsHttpBinding"
bindingConfiguration="DefaultBindingConfiguration"
name="LocalEndpoint" />
Тогда код клиента выглядит следующим образом:
public void createServiceProxy()
{
if (Util.IsOperatingLocally())
this.proxy = new ProxyClient("LocalEndpoint");
else
this.proxy = new ProxyClient("RemoteEndpoint");
}
Без кубиков.Не могу добавить сервисную ссылку.
Нет привязки протокола к указанному адресу «Адрес 1».Привязки протокола настраиваются на уровне сайта в конфигурации IIS или WAS.
Тогда я подумал: может быть, поможет тег host и его тег dns.Нет, это для аутентификации.
Тогда я подумал: я буду использовать net.tcp для локальной конечной точки.Упс ... IIS 6 не поддерживает net.tcp.
Тогда я подумал: я знаю, конструктор ProxyClient принимает строку remoteAddress в качестве второго параметра.Теперь это будет выглядеть так:
<endpoint
address=""
binding="wsHttpBinding"
bindingConfiguration="DefaultBindingConfiguration"
name="MyEndpointName" />
public void createServiceProxy()
{
if (Util.IsOperatingLocally())
this.proxy = new ProxyClient("MyEndpointName", "Address 1");
else
this.proxy = new ProxyClient("MyEndpointName", "Address 2");
}
Видимо, нет.При попытке создать экземпляр ProxyClient ...
Не удалось найти элемент конечной точки с именем 'MyEndpointName' и контрактом MyService.IService 'в разделе конфигурации клиента ServiceModel.
Это приводит меня к app.config, чей сгенерированный клиентский раздел выглядит следующим образом:
<client>
<endpoint address="http://localhost:3471/Service.svc" binding="customBinding"
bindingConfiguration="MyEndpointName" contract="MyService.IService"
name="MyEndpointName">
<identity>
<userPrincipalName value="DevMachine\UserNa,e" />
</identity>
</endpoint>
</client>
Который, конечно, мне не подходит.
Моя следующая мысль не здорова.Пожалуйста, помогите.