2010-11-23 7 views
7

Ich habe 2 WCF-Dienste im IIS-Server gehostet.Fehler "Keine Protokollbindung entspricht der angegebenen Adresse ..."

Hier ist web.config

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
    </system.web> 
    <system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="HttpBinding" /> 
     </basicHttpBinding> 
    </bindings> 
    <services> 
     <service name="BShop.Services.BubensService"> 
     <endpoint address="http://localhost:9001/BubensService" binding="basicHttpBinding" 
      bindingConfiguration="HttpBinding" name="" contract="BShop.Services.IBubensService" /> 
     </service> 
     <service name="BShop.Services.OrdersService"> 
     <endpoint address="http://localhost:9001/OrdersService" binding="basicHttpBinding" 
      bindingConfiguration="HttpBinding" contract="BShop.Services.IOrdersService" /> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior> 
      <serviceMetadata httpGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="false"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="false" /> 
    </system.serviceModel> 
    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 
</configuration> 

Wenn ich versuche, es zu laufen Ich habe

Kein Protokoll-Bindung entspricht die angegebene Adresse 'http: // localhost: 9001/BubensService' . Protokollbindungen werden unter auf der Ebene Site in IIS oder WAS konfiguriert.

Was habe ich in Config vermisst?

Antwort

21

Wenn Sie Ihre WCF-Dienste in IIS hosten, ist Ihre in den Dienstendpunkten definierte Adresse nicht die Adresse, die Sie verwenden müssen.

<endpoint 
     // this is **NOT** the address you can use to call your service! 
     address="http://localhost:9001/BubensService" 

vielmehr der Web-Server, das Port (in der Regel 80) und das virtuelle Verzeichnis und die SVC-Datei Ihre Dienstadresse ermitteln. So können Sie Service-Adressen hier wäre:

http://YourServer/YourVirtualDirectory/YourServiceFile.svc/ 

Was Sie ist relative Adressen definieren tun können, zum Beispiel:

<service name="BShop.Services.BubensService"> 
    <endpoint name="" 
      address="BubensService" 
      binding="basicHttpBinding" bindingConfiguration="HttpBinding" 
      contract="BShop.Services.IBubensService" /> 
</service> 

Dann ist dieser Dienst wäre aufrufbar unter:

http://YourServer/YourVirtualDirectory/YourServiceFile.svc/BubensService 
+0

Was ist der Unterschied zwischen der Definition der Adresse im Endpunkt und der Definition eines baseurl? Do 2 Base URL, 1 Server Targeting andere localhost-Targeting das Problem lösen? – batmaci

0

Just for der Vorteil der suchenden Menschen. Ich bin auf dieses Problem gestoßen. Um es zu beheben prüft ich die web.config mit marc_s ‚s Antwort dann hat die folgenden, wie ich immer noch Probleme hatte:

  1. Delete Virtual Directory.
  2. Ging zu Projekteigenschaften -> Web-Panel -> Selected 'Lokale IIS-Webserver verwenden' mit Projekt-URL von http: // {localhost}/{myservice} (offensichtlich ohne die geschweiften Klammern) und neu erstellt das virtuelle Verzeichnis.
  3. Der App Pool wurde in .NET 4 mit integriertem Pipeline-Modus geändert. Die Änderung des App-Pools schien es zu beheben.
Verwandte Themen