J'ai écrit un service WCF dans un service Windows, et pour une raison que je ne comprends pas, j'ai déployé le service sur un tas de systèmes (tous presque identiques dans OS et configuration), et il fonctionne sur tous les serveurs sauf un. La configuration pour tous les déploiements est identique à l'exception de l'adresse de base du service.Service WCF (net.tcp): Fonctionne sur tous les systèmes sauf un
Lorsque le service est démarré, je n'obtiens aucune exception lorsque j'ouvre le ServiceHost
et lorsque j'utilise netstat -anp
je peux voir le socket a été ouvert par le processus du service. J'ai configuré la journalisation du pare-feu Windows pour les paquets abandonnés, mais le fichier journal reste vide.
Si je tente d'accéder au service WCF de client test WCF, je reçois le message suivant:
Error: Cannot obtain Metadata from net.tcp://myhostname:9001/SysMonitorAgent
If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address. For help enabling metadata publishing, please refer to the MSDN documentation at http://go.microsoft.com/fwlink/?LinkId=65455.
WS-Metadata Exchange Error
URI: net.tcp://myhostname:9001/SysMonitorAgent
Metadata contains a reference that cannot be resolved: 'net.tcp://myhostname:9001/SysMonitorAgent'.
There was no endpoint listening at net.tcp://myhostname:9001/SysMonitorAgent that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.
J'ai essayé l'enregistrement WCF, mais le fichier journal ne même pas créé.
La configuration du service est la suivante:
<system.serviceModel>
<diagnostics>
<messageLogging logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" />
</diagnostics>
<bindings>
<netTcpBinding>
<binding name="InterfaceServiceNetTcpBinding">
<security mode="None">
<transport clientCredentialType="None" protectionLevel="None" />
<message clientCredentialType="None" />
</security>
</binding>
</netTcpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="InterfaceServiceBehavior">
<serviceMetadata httpGetEnabled="false" />
<serviceDebug httpHelpPageEnabled="false" httpsHelpPageEnabled="false" includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="SysMonitor.Agent.Interface.InterfaceService" behaviorConfiguration="InterfaceServiceBehavior">
<endpoint address="" binding="netTcpBinding" bindingConfiguration="InterfaceServiceNetTcpBinding" contract="SysMonitor.Agent.Interface.IInterfaceService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="net.tcp://myhostname:9001/SysMonitorAgent" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
Je suis un peu perdu, parce qu'il n'y a aucune indication quant à la raison pour laquelle il ne fonctionne pas. Toute aide serait appréciée.
J'ai vérifié que le port n'est utilisé que par le processus correct. .NET est la version 4, installée sur toutes les machines. Les DLL tierces ne sont pas utilisées. Le seul pare-feu est le pare-feu Windows qui a une exception pour le port TCP utilisé. Tous les déploiements ont été effectués à partir du même fichier .msi et les fichiers sont identiques. – ErikHeemskerk
Correction, et c'était une erreur stupide de ma part. J'ai essayé de changer le port, et j'ai remarqué en exécutant 'netstat -ano' que le port n'avait pas changé. Puis j'ai remarqué que j'avais édité le mauvais fichier de configuration. Merci pour le pointeur! – ErikHeemskerk
Hey david, j'ai le même problème je pense et j'ai essayé ce que tu as dit mais ça n'a pas fonctionné ... peux-tu m'aider? voici la question pertinente: ** [Question] (http: // stackoverflow.com/questions/9273340/cant-test-net-tcp-service-in-wcftestclient # comment11690979_9273340) ** – Joze