как привязать сервис WCF к IP адресу - PullRequest
1 голос
/ 03 августа 2009

Я разрабатываю службу WCF, размещенную на IIS, используя VSTS2008 + C # + .Net 3.5. Я нахожу, что при ссылке на службу от клиента с помощью Добавить ссылку на службу ... клиент должен иметь возможность преобразовывать имя компьютера в IP-адрес, поскольку WSDL ссылается на некоторый файл схемы по имени машины. Вот пример части файла WSDL, чтобы проанализировать файл WSDL со стороны клиента для генерации прокси-сервера, мы должны иметь возможность разрешить имя машины testmachine1 в связанный IP-адрес,

<xsd:import schemaLocation="http://testmachine1/service.svc?xsd=xsd1" 
     namespace="http://schemas.microsoft.com/2003/10/Serialization/"/>

Мой вопрос: по какой-то причине имя машины не может быть разрешено постоянно (по нетехническим причинам), поэтому я хочу привязать к IP-адресу хост-сервера IIS. Является ли это возможным? Если да, оцените, если кто-нибудь может посоветовать. Вот мой текущий файл WCF web.config, я хочу знать, как его изменить, чтобы он работал с IP-адресом,

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service behaviorConfiguration="Foo.WCF.ServiceBehavior"
        name="Foo.WCF.CustomerManagement">
        <endpoint address="" binding="basicHttpBinding" 
                  contract="Foo.WCF.ICustomerManagement">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" 
                  contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="Foo.WCF.ServiceBehavior">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

спасибо заранее, George

Ответы [ 2 ]

2 голосов
/ 03 августа 2009

Если ваша служба WCF размещена в IIS, вы не можете установить отдельный адрес. Вы должны использовать URL-адрес виртуального каталога, в котором находится ваш SVC-файл, - либо с именем машины (http://yourserver/virtualdir/myservice.svc), либо с IP (http://123.123.123.123/virtualdir/myservice.svc).

)

Если вы используете IP для добавления ссылки на службу, этот IP будет использоваться в WSDL, сгенерированном при импорте службы.

Если вы сами размещаете службу WCF (служба Windows, консольное приложение), вы можете установить адрес службы в конфигурации и использовать для нее имя или IP-адрес компьютера.

Марк

1 голос
/ 21 декабря 2009

У меня была такая же проблема, и я видел ваш пост, когда искал ответы на свою проблему.

Я думаю, что, возможно, нашел решение, которое состояло в том, чтобы изменить привязку сайта IIS к ip. Я до сих пор не понимаю, почему это не может быть настройка в файле .config.

Вот ссылка на решение, которое я нашел (http://blogs.msdn.com/wenlong/archive/2007/08/02/how-to-change-hostname-in-wsdl-of-an-iis-hosted-service.aspx).

Вот ссылка на мое сообщение по моей проблеме ( В ссылках на службы .NET WCF используется имя сервера, а не IP-адрес, что вызывает проблемы при использовании ).

Вот ссылка на мой пост о поиске решения ( WCF (служба хостинга в IIS) - имя машины автоматически выбирается WCF, а не IP? ).

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