J'ai déplacé mon service de transfert de fichiers de basicHttpBinding à netTcpBinding alors que j'essaie de configurer un canal en mode duplex. J'ai également commencé mon service de partage de port net.tcp .Impossible de trouver une adresse de base qui correspond au système net.tcp
Je suis actuellement en développement et je m'auto-héberge sur un boîtier xp jusqu'à ce que nous déplacions l'application sur un serveur de développement. Donc, pour l'instant, je n'ai pas accès à IIS.
Après avoir configuré mon service en tant que tel:
<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>
Et, ma fixation en tant que tel:
<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>
Je reçois l'erreur de folloing quand je droit et le navigateur du fichier SVC:
Impossible de trouver une adresse de base correspond au système net.tcp pour le point d'extrémité wi la liaison NetTcpBinding. Les schémas d'adresse de base enregistrés sont [http].
La ligne de lecture suggère que, pour résoudre ce problème, je besoin d'ajouter le net.tcp lier à la liaison de l'application dans IIS. Mais, qu'est-ce que je fais si je suis l'auto-hébergement et n'ai pas accès à IIS ?? Par ailleurs, si vous lisez ceci et que "faites" avoir IIS, procédez comme suit: Cliquez avec le bouton droit sur le répertoire virtuel/application dans IIS -> Gérer l'application -> Paramètres avancés. Et, dans la partie Protocoles activés, ajoutez net.tcp.
Des idées?
MISE À JOUR: Je pensais que ça fonctionnait mais ça ne marche toujours pas. Voici ce que j'ai maintenant: Je reçois toujours l'erreur "impossible de trouver l'adresse de base qui correspond à scheme net.tcp". J'ai changé toutes mes adresses de base pour refléter votre suggestion. Voici ce que j'ai maintenant:
<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>
J'ai essayé avec les deux "net.tcp: // localhost: 2544" & "net.tcp: // localhost: 8001". Dois-je ajouter (autoriser) quelque chose dans mes paramètres de pare-feu? D'autres suggestions?
Voici mexTcpBinding de mon filetransferservice dans mon fichier 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>
Je suis toujours incapable de faire référence à mon FileTransferServiceClient dans mon application web.
Merci encore.
bien, avec baseAddress = "net.tcp: // localhost: 2544/filetransfer /" et address = "filetransfer" sur votre endpoint, votre URL complète sera " net.tcp: // localhost: 2544/filetransfer/filetransfer "- avez-vous essayé de vous connecter là? –
Merci - un oubli stupide. J'avais normalement "savon" là et l'ai changé en arrière. J'ai passé l'heure passée à parcourir mes fichiers App.config et Web.config avec un peigne fin et je l'ai finalement compilé. Quand je "ajoute une référence de service", je peux référencer ../trade/mex et .../auth/mex mais mon net.tcp .../filetransfer/mex ne se présente jamais comme une option. Donc, tout compile bien, sauf que je ne peux pas accéder au FileTransferServiceClient à partir de mon application Web. Une idée de pourquoi .../filetransfer/mex ne se présente pas? J'utilise mexTcpBinding et j'ai posté à quoi il ressemble dans ma question. Merci encore. –
lire @marc_s. Merci encore. –