Não foi possível encontrar um endereço base que corresponda ao esquema net.tcp

Eu movi meu serviço de transferência de arquivos de basicHttpBinding para netTcpBinding como estou tentando configurar um canal de modo duplex. Eu também iniciei meu serviço de compartilhamento de porta net.tcp.

Eu estou atualmente em dev e sou auto hospedagem em uma caixa xp até que nós movemos o aplicativo para um servidor de desenvolvimento. então, por enquanto, eu não tenho acesso ao IIS.

Depois de configurar meu serviço como tal:

<service behaviorConfiguration="transferServiceBehavior" name="API.FileTransfer.FileTransferService">
        <endpoint name="MyFileTransferEP"
                  address  = ""
                  binding  = "netTcpBinding"
                  bindingConfiguration="MyFileTransferNetTcpEP"
                  behaviorConfiguration="NetTcpEPBehavior"
                  contract="API.FileTransfer.IFileTransferService" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:8001/project/filetransfer.svc" />
          </baseAddresses>
        </host>
</service>

E minha ligação como tal:

<netTcpBinding>
        <binding name="MyFileTransferNetTcpEP"
                 hostNameComparisonMode="StrongWildcard"
                 closeTimeout="00:01:00"
                 openTimeout="00:01:00" 
                 receiveTimeout="00:10:00" 
                 sendTimeout="00:01:00"
                 maxReceivedMessageSize="2147483647"
                 transferMode="Streamed"
                 portSharingEnabled="true">
          <security mode="None">
            <transport clientCredentialType="None" />
            <message clientCredentialType="None" />
          </security>
        </binding>
</netTcpBinding>

Eu recebo o seguinte erro quando eu direito e navegador para o arquivo SVC:

Não foi possível encontrar um endereço base que corresponda ao esquema net.tcp para o nó de extremidade com a ligação NetTcpBinding. Esquemas de endereço base registrados são [http].

A leitura online sugere que, para corrigir esse problema, precisei adicionar a ligação net.tcp à ligação do aplicativo no IIS. Mas, o que eu faço se sou auto hospedagem e não tenho acesso ao IIS? By the way, se você está lendo isso e "fazer" tem IIS, faça o seguinte: Clique com o botão direito do mouse no diretório virtual / aplicação no IIS -> Gerenciar aplicativo -> Configurações avançadas. E, na parte Protocolos Ativados, adicione net.tcp.

Alguma ideia?

ATUALIZAÇÃO: Eu achei que estava funcionando, mas ainda não está funcionando. Aqui está o que eu tenho agora: Eu ainda estou recebendo o erro "não foi possível encontrar endereço de base que corresponda ao esquema net.tcp". Eu mudei todos os meus endereços base para refletir sua sugestão. Aqui está o que eu tenho agora:

<service behaviorConfiguration="transferServiceBehavior" name="API.FileTransfer.FileTransferService">
            <endpoint name="MyJSONFileTransferEP"
                      address="json"
                      binding="webHttpBinding"
                      bindingConfiguration="jsonWeb"
                      behaviorConfiguration="WebHttpEPBehavior"
                      contract="API.FileTransfer.IJSONFileTransferService" />
            <endpoint name="MyPOXFileTransferEP"
                      address="pox"
                      behaviorConfiguration="WebHttpEPBehavior"
                      binding="webHttpBinding"
                      bindingConfiguration="poxWeb"
                      contract="API.FileTransfer.IPOXFileTransferService" />
            <endpoint name="MySOAPFileTransferEP"
                      address="filetransfer"
                      binding="netTcpBinding"
                      bindingConfiguration="netTcpWeb"
                      behaviorConfiguration="NetTcpEPBehavior"
                      contract="API.FileTransfer.ISOAPFileTransferService" />
            <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/>
            <host>
              <baseAddresses>
                <add baseAddress="net.tcp://localhost:2544/filetransfer/" />
              </baseAddresses>
            </host>
          </service>

Eu tentei isso com os dois "net.tcp: // localhost: 2544" e "net.tcp: // localhost: 8001". Preciso adicionar (permitir) algo nas configurações do meu firewall? Alguma outra sugestão?

Aqui está o mexTcpBinding do meu filetransferservice no meu arquivo App.config:

<endpoint address="net.tcp://localhost:2544/filetransfer/mex"
        binding="mexTcpBinding" bindingConfiguration="" contract="IMetadataExchange"
        name="filetransfermex">
        <identity>
          <certificateReference storeName="My" storeLocation="LocalMachine"
            x509FindType="FindBySubjectDistinguishedName" />
        </identity>
      </endpoint>

Ainda não consigo referenciar meu FileTransferServiceClient no meu aplicativo da web.

Obrigado novamente.

questionAnswers(8)

yourAnswerToTheQuestion