2009-04-14 8 views
0

J'ai un projet silverlight qui appelle dans un service wcf. Tout fonctionne bien sur ma machine locale.Silverlight WCF service agissant étrange

Toutefois, lorsque je déploie sur une machine virtuelle, avec exactement la même requête, le service wcf renvoie, mais le résultat est vide.

J'ai essayé le débogage, mais je n'ai pas réussi à l'obtenir dans le service wcf.

Des idées ce que le problème pourrait être, ou comment je pourrais aller sur le débogage?

Merci


Je cernées ce que le problème, mais ne suis pas sûr de ce que la solution est.

Dans mon projet silverlight le service WCF Je référencement est http://localhost/.../SilverlightApiService.svc

je Fiddler sur mon vm pour voir la demande qui a été faite et au lieu d'essayer de contacter le service au-dessus, il essayait de contacter:

http:///.../SilverlightApiService.svc

donc, pour quelque raison que mon nom de la machine s'insérée là au lieu de localhost. Toute idée à ce sujet serait appréciée.

+0

Avez-vous essayé Fiddler? –

Répondre

0

Pouvez-vous nous donner un peu plus d'informations? Quel genre de liaison utilisez-vous? A quoi ressemble la configuration du service et la configuration du client? D'où recevez-vous vos données? Pourrait-il être le service sur la VM ne reçoit pas de données? (Requêtes par exemple une base de données qui ont ne tout simplement pas les données demandées?)

Marc

+0

Il utilise basicHttpBinding. La référence du service client a été ajoutée à l'aide de la référence d'ajout. Je sais que les données sont là parce que j'ai créé une application de console, l'a fait référencer le service et il a renvoyé des résultats en utilisant la requête qui ne renvoie aucun résultat lorsqu'il est appelé depuis silverlight. –

0

J'ai eu que cela se produise avant. Je voudrais essayer cela. Définissez la page de démarrage en tant que fichier de service Web et exécutez l'application. Réglez ensuite la page de démarrage sur votre page par défaut. Ensuite, mettez à jour toutes les références de serveur dans votre projet SL. Recompilez tout et republiez. Cela m'a aidé un tas de fois dans le passé.

0

J'ai trouvé le problème, mais je ne suis pas sûr de la solution.

Dans mon projet silverlight le service WCF Je référencement est http://localhost/.../SilverlightService.svc

je Fiddler sur mon vm pour voir la demande qui a été faite et au lieu d'essayer de contacter le service au-dessus, il essayait de contacter:

http: ///.../SilverlightService.svc

donc, pour quelque raison que mon nom de la machine s'insérée là au lieu de localhost. Toute idée à ce sujet serait appréciée.

1

J'ai eu ce problème exact lors du déploiement sur amazon ec2 - Le nom de la machine pour le service était retourné dans le wsdl plutôt que dans le DNS.

Il y avait quelques solutions (une impliquait la création de wsdl-yuck statique!)

Mais l'autre a été la création d'une sorte de modèle d'usine pour le service

Ce fil (vous pouvez lire tout cela, mais les réponses sont en bas.) http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/c7fd51a2-773e-41d4-95a0-244e925597fe/

La légère chute avec c'est que bien que cela fonctionne - si vous changez l'emplacement du serveur, vous devrez vous rappeler de mettre à jour votre config - Qui, bien que ce ne soit pas difficile, il est facile d'oublier de faire.

0

Je l'ai compris. Fondamentalement, le nom de mon ordinateur a été codé en dur dans mon fichier ServiceReferences.ClientConfig dans mon projet Silverlight.

Ce que je devais faire était de préciser ce programme URL à utiliser pour la référence de service lors de l'instanciation mon client de service:

System.ServiceModel.EndpointAddress address = new System.ServiceModel.EndpointAddress(new Uri 
     (Application.Current.Host.Source, "../WebServices/SilverlightService.svc")); 

     ServiceClient serviceClient = new ServiceClient("BasicHttpBinding_IService", address); 
Questions connexes