2009-08-07 2 views
1

Wenn ich meinen ASP.NET WCF-Dienst veröffentliche, verwendet die WSDL den Computernamen anstelle des Domänennamens. Wie kann man das verhindern?In IIS-gehosteten WCF-Diensten, wie kann die Adressübersetzung deaktiviert werden?

Beispiel:

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

Wenn ich wirklich will:

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

Antwort

3

Sie können dies nicht verhindern - zumindest nicht nur mit einem Konfigurationsschalter oder so ähnlich.

Sie könnten in der Lage sein, Ihr Problem zu beheben, indem Sie hier in diesem Artikel suchen - ein chap beschreibt das genaue Problem auftreten und eine mögliche Lösung, um es:

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

Und eine andere intelligente Gentleman, lief in ein paar Probleme mit dem gleichen Problem:

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

Marc

3

Nur damit zukünftige Besucher die richtige Antwort auf diese Frage finden: Der obige Kommentar ist nicht korrekt. Sie können dieses Problem beheben, indem Sie mehrere Optionen in der Datei web.config ändern. Hier ist, wie mein eingerichtet ist:

<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> 

Die wichtigen Bits sind die bekommen Urls, die Identität und die baseaddresses.

Verwandte Themen