Solución:
Error (WCF):
No se pudo encontrar una dirección base que coincida con el esquema net.tcp para el punto final con el enlace NetTcpBinding. Los esquemas de direcciones base registrados son [http].
Paso 1: Tenga en cuenta que WAS (Servicio de activación de procesos de Windows) o el protocolo que no es http solo es compatible con las siguientes plataformas: • Windows Vista • Windows 7 • Windows Server 2008
- Vaya a Activar o desactivar las funciones de Windows
- Vaya a Microsoft .NET Framework 3.5
- Compruebe la activación HTTP de Windows Communication Foundation
- Compruebe la activación no HTTP de Windows Communication Foundation
Paso 2: IIS> Sitio web de host WCF> Administrar aplicación> Configuración avanzada> Protocolos habilitados> Establecer el valor en HTTP, NET.TCP
Necesitas definir solo el dirección base (no la entero dirección) para su servicio, y luego el resto en el punto final del servicio. La dirección que tienes con el filetransfer.svc
el archivo al final no es una dirección base válida (es una dirección de archivo, en realidad)
<service behaviorConfiguration="transferServiceBehavior"
name="API.FileTransfer.FileTransferService">
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:8001/project/" />
</baseAddresses>
</host>
<endpoint name="MyFileTransferEP"
address = "filetransfer"
binding = "netTcpBinding"
bindingConfiguration="MyFileTransferNetTcpEP"
behaviorConfiguration="NetTcpEPBehavior"
contract="API.FileTransfer.IFileTransferService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
Con esto, y utilizando el autohospedaje, su servicio estaría disponible en la dirección completa:
net.tcp://localhost:8001/project/filetransfer
Dado que este es net.tcp y usted es autohospedado, no es necesario ningún archivo svc.
ACTUALIZAR: si desea poder obtener metadatos en su dirección base net.TCP, deberá exponer un punto final net.Tcp MEX como este dentro de su <service>
sección:
<endpoint name="NetTcpMEX"
address="netTcpMex"
binding="mexTcpBinding"
contract="IMetadataExchange" />
Espacio en la entrada “Protocolos habilitados” en IIS => Seleccionar directorio virtual / aplicación => configuración avanzada => Protocolos habilitados. p.ej http, net.tcp. (Espacio entre el texto del protocolo
Esto debería ser http, net.tcp (es decir, sin espacio entre el texto del protocolo)