Ho spostato il servizio di trasferimento file da basicHttpBinding a netTcpBinding mentre sto tentando di impostare un canale in modalità duplex. Ho anche avviato il mio servizio di condivisione porta net.tcp .Impossibile trovare un indirizzo di base corrispondente allo schema net.tcp
Attualmente sono in dev e sto self hosting su una scatola xp finché non spostiamo l'app su un server di sviluppo. quindi, per ora, non ho accesso a IIS.
Dopo aver configurato il mio servizio in quanto tale:
<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, il mio vincolante in quanto tali:
<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>
ottengo l'errore folloing quando destra e browser per il file SVC:
Impossibile trovare un indirizzo di base che lo schema corrisponda a net.tcp per l'endpoint th binding NetTcpBinding. Gli schemi di indirizzi di base registrati sono [http].
La lettura on-line suggerisce che, al fine di risolvere questo problema, ho bisogno di aggiungere il legame con l'associazione dell'applicazione in IIS net.tcp. Ma cosa faccio se sono auto-hosting e non ho accesso a IIS ?? A proposito, se stai leggendo questo e "fai" avere IIS, fai quanto segue: Fai clic con il pulsante destro del mouse sulla directory/applicazione virtuale in IIS -> Gestisci applicazione -> Impostazioni avanzate. E, nella parte dei protocolli abilitati, aggiungi net.tcp.
Qualche idea?
AGGIORNAMENTO: Pensavo di averlo funzionato ma non funziona ancora. Ecco cosa ho ora: Sto ancora ricevendo l'errore "Impossibile trovare l'indirizzo di base che corrisponde allo schema net.tcp". Ho cambiato tutti i miei indirizzi di base per riflettere il tuo suggerimento. Ecco quello che ho adesso:
<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>
Ho provato questo con entrambi "net.tcp: // localhost: 2544" & "net.tcp: // localhost: 8001". Devo aggiungere (consentire) qualcosa nelle impostazioni del mio firewall? Qualche altro suggerimento?
Ecco mexTcpBinding di mio filetransferservice nel mio file 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>
Sono ancora in grado di fare riferimento mia FileTransferServiceClient nella mia web app.
Grazie ancora.
bene, con baseAddress = "net.tcp: // localhost: 2544/filetransfer /" e address = "filetransfer" sul tuo endpoint, l'URL completo sarà " net.tcp: // localhost: 2544/filetransfer/filetransfer "- hai provato a connetterti ?? –
Grazie - stupida sorveglianza. Di solito avevo "sapone" e l'ho cambiato. Ho passato l'ora passata a esaminare i miei file App.config e Web.config con un pettine a denti fini e alla fine l'ho compilato. Quando aggiungo il riferimento al servizio, sono in grado di fare riferimento a ../trade/mex e .../auth/mex ma il mio net.tcp .../filetransfer/mex non viene mai visualizzato come opzione. Quindi, tutto si compila bene tranne che non riesco ad accedere a FileTransferServiceClient dalla mia app Web. Qualche idea del perché .../filetransfer/mex non si presenta? Sto usando mexTcpBinding e ho postato quello che sembra nella mia domanda. Grazie ancora. –
leggi @marc_s. Grazie ancora. –