2010-10-21 3 views
4

Возможно, я просто не понимаю, но у меня есть служба, которая развернута на машине IIS 6. У этой машины есть адрес локальной сети и общедоступный интернет-адрес.Конечные точки WCF заставляют меня сумасшедшим

Насколько я должен быть в состоянии опубликовать эту услугу с помощью обоих доступных?

Сначала я подумал: Ничего особенное, 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.

Тогда я подумал: может быть, тег хоста и его тег 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> 

Который точно не смотреть прямо на меня.

Моя следующая мысль не является здоровой. Пожалуйста помоги.

ответ

4

Вот что я делаю:

т.д.

+1

Если вы правы, я назвать мой первый ребенок родился Otavio. –

+0

Однажды я могу просто познакомить вас с маленьким Отавио. Благодарю. –

+0

@SnOrfus - Рад за помощь и благодарю вас за честь :-) –

1

Были ли вы на самом деле положить строки «Адрес 1» и «Адрес 2» в конфигурационном файле?

Структура всегда анализирует адрес, чтобы узнать, какой транспорт использовать. например, «http: // myurl» будет использовать http, «net.pipe: // localhost/MyNamedPipeExample» будет использовать IPC.

Ошибка была вызвана тем, что в строке «Адрес 1» не было префикса.

Я считаю, что это сработало бы, без необходимости жёстко адреса:

<endpoint 
    address="http://serverName/ServiceName/Service.svc" 
    binding="wsHttpBinding" 
    bindingConfiguration="DefaultBindingConfiguration" 
    name="RemoteEndpoint" /> 

<endpoint 
    address="http://www.companyName.com/ServiceName/Service.svc" 
    binding="wsHttpBinding" 
    bindingConfiguration="DefaultBindingConfiguration" 
    name="LocalEndpoint" /> 
+0

Нет, я называл их http: //serverName/ServiceName/Service.svc (local) и http://ServiceName.CompanyName.com/ Service.svc (удаленный), где была отправлена ​​setyo на isp для удаленного адреса, чтобы перейти к: http: //ip.ServiceNam/Service.svc. Адреса были доступны для просмотра. –

+0

Извините, просто быть абсолютно уверенным (потому что разметка, возможно, проглотила некоторые ваши комментарии). Вы помещали префикс «http: //» в именах адресов? Если нет, это объяснит ошибку. –

Смежные вопросы