В IIS размещены службы WCF, как отключить трансляцию адресов? - PullRequest
1 голос
/ 08 августа 2009

Когда я публикую свою службу ASP.NET WCF, WSDL использует имя компьютера вместо имени домена. Как это предотвратить?

Пример:

<wsdl:import namespace="http://ListenerService" 
     location="http://MACHINE_NAME/ListenerService/service.svc?wsdl=wsdl0"/>
<soap:address location="http://MACHINE_NAME/ListenerService/service.svc"/>

Когда я действительно хочу:

<wsdl:import namespace="http://ListenerService" 
     location="http://MYDOMAIN.COM/ListenerService/service.svc?wsdl=wsdl0"/>
<soap:address location="http://MYDOMAIN.COM/ListenerService/service.svc"/>

Ответы [ 2 ]

3 голосов
/ 22 сентября 2010

Только для того, чтобы будущие посетители нашли правильный ответ на этот вопрос: приведенный выше комментарий не является правильным. Вы можете решить эту проблему, изменив несколько параметров в файле web.config. Вот как настроена моя:

<system.serviceModel>
    <services>
      <service name="ourWebService.ourService" behaviorConfiguration="ourWebService.ourServiceBehavior">
    <host>
            <baseAddresses>
                <add baseAddress="http://oursitename.com:83/ourService.svc" />
            </baseAddresses>
        </host>
        <endpoint bindingNamespace="http://oursitename.com:83/ourService.svc" 
        address="" binding="basicHttpBinding" contract="ourIWebService.IourService" 
        bindingConfiguration="customBinding2">
          <identity>
            <dns value="oursitename.com" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>
    <bindings>
    <basicHttpBinding>
        <binding name="customBinding2" >
          <readerQuotas maxArrayLength="2147483" maxStringContentLength="2147483647" maxNameTableCharCount="2147483647" />
        </binding>
      </basicHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ourWebService.ourServiceBehavior" httpGetUrl="http://oursitename.com:83/ourService.svc">
          <serviceMetadata httpGetEnabled="true" httpGetUrl="http://oursitename.com:83/ourService.svc/mex"/>
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

Важными битами являются URL-адреса получения, идентификатор и базовые адреса.

3 голосов
/ 08 августа 2009

Вы не можете предотвратить это - по крайней мере, не с помощью переключателя конфигурации или чего-то в этом роде.

Возможно, вы сможете исправить свою проблему, посмотрев эту статью здесь - глава, описывающая точную проблему, с которой вы столкнулись, и возможное решение:

http://www.codemeit.com/wcf/wcf-wsdl-xsdimport-schemalocations-link-to-local-machine-name-not-domain-name-while-hosted-in-iis.html

И еще один умный джентльмен, который столкнулся с несколькими проблемами с той же проблемой:

http://www.leastprivilege.com/HostHeadersSSLAndWCFMetadata.aspx

Марк

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