Biblioteca de servicios WCF con NetTcpBinding

Estoy teniendo un momento difícil con NetTcpBinding.

Cuando ejecuto mi servicio WCF, obtengo esto:

System.InvalidOperationException: Could not find a base address that matches scheme net.tcp for the endpoint with binding NetTcpBinding. Registered base address schemes are [http]. at System.ServiceModel.ServiceHostBase.MakeAbsoluteUri(Uri relativeOrAbsoluteUri, Binding binding, UriSchemeKeyedCollection baseAddresses) at System.ServiceModel.Description.ConfigLoader.LoadServiceDescription(ServiceHostBase host, ServiceDescription description, ServiceElement serviceElement, Action`1 addBaseAddress) at System.ServiceModel.ServiceHostBase.LoadConfigurationSectionInternal(ConfigLoader configLoader, ServiceDescription description, ServiceElement serviceSection) at System.ServiceModel.ServiceHostBase.LoadConfigurationSectionInternal(ConfigLoader configLoader, ServiceDescription description, String configurationName) at System.ServiceModel.ServiceHostBase.ApplyConfiguration() at System.ServiceModel.ServiceHostBase.InitializeDescription(UriSchemeKeyedCollection baseAddresses) at System.ServiceModel.ServiceHost.InitializeDescription(Type serviceType, UriSchemeKeyedCollection baseAddresses) at System.ServiceModel.ServiceHost..ctor(Type serviceType, Uri[] baseAddresses) at Microsoft.Tools.SvcHost.ServiceHostHelper.CreateServiceHost(Type type, ServiceKind kind) at Microsoft.Tools.SvcHost.ServiceHostHelper.OpenService(ServiceInfo info) 

Obtengo esto cuando ejecuto la aplicación de manera predeterminada utilizando WCFSvcHost. No hay código adicional. Solo el código predeterminado de cualquier nuevo servicio wcf. Todo lo que quería hacer era cambiar el enlace a tcp.

¿Cómo resuelvo este problema?

Edición: Aquí está la aplicación de mi WCF.config

                                            

En esta sección

      

agregar una net.tcp: // dirección base.

       

Estoy seguro de que a estas alturas ya ha solucionado el problema, pero realmente no tiene nada que ver con baseAddresses, que es a lo que llevan todos los tableros de Bullentin. Encontré la respuesta en http://social.msdn.microsoft.com/forums/en-US/wcf/thread/c9f8d99d-89ee-4573-8528-a21b047bad11 . Suponiendo que está utilizando IIS 7.x: haga clic con el botón derecho en el directorio virtual / aplicación en IIS, seleccione Administrar aplicación -> Configuración avanzada. En la sección ‘Protocolos habilitados’ agregue net.tcp, por ejemplo, http, net.tcp. Esto es necesario incluso si ya agregó este protocolo en el nivel del sitio.

Puedes compartir puertos, no es demasiado difícil.

Asegúrese de NO UTILIZAR ESPACIOS al seleccionar protocolos habilitados en IIS (haga clic con el botón derecho en el sitio -> Administrar sitio web -> Configuración avanzada). Si tiene “http, net.tcp” en lugar de “http, net.tcp” no funcionará, y en su lugar le dará este error exacto.

Más información aquí: http://www.weeksofprogramming.com/post/Could-not-find-a-base-address-Check-for-spaces-in-IIS7.aspx

Configure el enlace net.tcp en su sitio IIS y configure el protocolo habilitado como “http, net.tcp usando la configuración avanzada”. Debería funcionar

  1. Verifique que el servicio de uso compartido de puertos Net.Tcp se haya iniciado en la máquina
  2. Verifique que el atributo netTcpBinding portSharingEnabled sea verdadero. (En WCF4 no es necesario proporcionar un nombre en el elemento de enlace si desea que esta especificación de enlace sea la predeterminada para net.tcp)