2011-08-23 4 views
0

J'ai créé un service à l'aide de la découverte WCF. Tout fonctionne correctement lorsqu'il est déployé sur un port spécifique (en utilisant le débogage VS2010), mais lorsque j'essaie de le déployer sur IIS, il trouve le service mais ne peut exécuter aucune des méthodes.L'appel de la fonction client WCF ne fonctionne pas sur IIS

Voici le code:

DiscoveryClient discoverclient = new DiscoveryClient(new UdpDiscoveryEndpoint()); 
FindResponse response = discoverclient.Find(new FindCriteria(typeof(IService))); 
EndpointAddress address = response.Endpoints[0].Address; 
ServiceClient client = new ServiceClient(new BasicHttpBinding(), address); 
Console.WriteLine(client.getMsg()); //some test function 
Console.ReadKey(); 

Lorsque Tring pour exécuter la méthode client.getMsg() je reçois l'erreur suivante:

EndpointNotFoundException:
There was no endpoint listening at http://computerName.domain/services/Service.svc that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.

Mais j'ai l'adresse, ce qui signifie qu'il a trouvé. Et si j'utilise le débogueur déployeur (pas à iis) je le trouve dans http://localhost:port/services/Service.svc et il fonctionne parfaitement bien. Comment puis-je le déployer à iis sans problèmes?

OS: win7 64 bits

fichier de configuration:

<services> 
    <service behaviorConfiguration="RemoteDeploy.Service1Behavior" 
    name="RemoteDeploy.Service"> 
    <endpoint address="" binding="basicHttpBinding" bindingConfiguration="" 
     contract="RemoteDeploy.IService"> 
     <identity> 
     <dns value="localhost" /> 
     </identity> 
    </endpoint> 
    <endpoint name="udpDiscoveryEpt" kind="udpDiscoveryEndpoint" /> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    </service> 

</services> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="RemoteDeploy.Service1Behavior"> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="false" /> 
     <serviceDiscovery> 

     </serviceDiscovery> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

+1

P Peut-être que vous devez ajouter les mappages svc à IIS? (ServiceModelReg.exe -i) – sternr

+0

Pourriez-vous s'il vous plaît poster votre fichier web.config, au moins où vous configurez vos points de terminaison. Avec les services WCF plus de fois que non, tous les problèmes sont liés à sa configuration. – AJC

Répondre

0

d'abord essayer d'obtenir http://computerName.domain/services/Service.svc dans votre navigateur - soit vous obtenez une description d'erreur ou d'un service ..

+0

aller à ce lien dans le navigateur ne fonctionne pas aussi, mais aller à: localhost/services/Service.svc fonctionne. Le findCriteria me donne la mauvaise adresse (me donne l'emplacement complet de l'ordinateur) – Ben2307

+0

Je reçois le même résultat dans le navigateur avec le nom de domaine de l'ordinateur et localhost - dans le cadre de l'URI - êtes-vous positif computerName.domain est correct, ou peut-être seulement fragment? –