2010-11-23 18 views
7

Tengo 2 servicios WCF alojados en el servidor IIS.error "Ningún enlace de protocolo coincide con la dirección especificada ..."

Aquí es 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> 

Cuando trato de ejecutarlo llegué

Sin enlace de protocolo coincide con la dada dirección 'http: // localhost: 9001/BubensService' . Los enlaces de protocolo se configuran en el nivel del sitio en la configuración de IIS o WAS .

¿Qué me perdí en la configuración?

Respuesta

21

Cuando aloja sus servicios WCF en IIS, su dirección definida en los puntos finales del servicio no es la que necesita utilizar.

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

Por el contrario, el servidor web, su puerto (normalmente 80) y el directorio virtual más el archivo SVC determinan su dirección de servicio. ¿Así que las direcciones de servicio en este caso sería:

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

Lo que puede hacer es definir direcciones relativas, por ejemplo:

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

A continuación, este servicio sería exigible en:

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

¿Cuál es la diferencia entre definir la dirección en el punto final y si definimos un baseurl? ¿Resuelve el problema la URL base 2, 1 servidor dirigido a otra orientación localhost? – batmaci

0

Sólo por el beneficio de las personas que buscan. Me encontré con este problema. Para solucionarlo he revisado el web.config utilizando marc_s 's respuesta, entonces hice lo siguiente como todavía tenía problemas:

  1. eliminar el directorio virtual.
  2. Fuimos a propiedades del proyecto -> Panel web -> Seleccionado 'Usar servidor web IIS local' con url de proyecto de http: // {localhost}/{myservice} (obviamente sin llaves) y recreé el directorio virtual.
  3. Cambié el grupo de aplicaciones a .NET 4 con modo de canal integrado. El cambio en el grupo de aplicaciones pareció arreglarlo.
Cuestiones relacionadas