2009-08-23 4 views
0

J'ai créé une application Silverlight simple, avec un service Web appelant une base de données, et l'ai fait fonctionner sur mon ordinateur de développement. Lorsque j'ai publié le projet de service Web sur IIS, sur le même ordinateur, et que j'ai accédé à l'application Silverlight à partir de IIS en utilisant http://localhost/SilverlightTest/, je pouvais voir Silverlight dans la page, mais l'appel au service Web ne fonctionnait pas. J'ai donc ajouté le fichier clientaccesspolicy.xml à plusieurs endroits. Toutes les instructions disent de le mettre dans le répertoire racine, donc j'ai essayé:Silverlight, déploiement, ports, stratégies inter-domaines et points de terminaison

c: \ inetpub/wwwroot \ N'a pas travaillé

c: \ webs \ SilverlightTest \ Ce dossier auquel je publie la projet de service Web, y compris le fichier xap. Mais n'a pas fonctionné

c: \ webs \ Juste une supposition, mais cela n'a pas fonctionné.

Puis, dans VS, j'ai ajouté le fichier au projet de service Web et l'a ajouté au dossier dans lequel le projet de service Web est stocké c: \ work \ Silverlight \ TestWCF \ TestWCF.Web \. Lorsque j'ai ouvert la page dans Firefox à partir d'IIS, l'appel au service Web a fonctionné. Apparemment, l'application Silverlight appelle le service Web dans mon dossier de développement, pas le service dans le répertoire virtuel IIS c: \ webs \ SilverlightTest \ (L'appel au service Web n'a pas fonctionné lorsque j'ai ouvert la page à partir d'un autre ordinateur le groupe de travail)/

Pourquoi l'application Silverlight appelle un service Web dans un dossier de développement? Le service Web ne devrait-il pas figurer dans le répertoire virutal sur lequel il a été publié? Comment puis-je résoudre la confusion?

Voici la configuration dans mon fichier ServiceReferences.ClientConfig

<client> 
     <endpoint address="http://dellnov2006:2753/SimpleWCF.svc" binding="basicHttpBinding" 
      bindingConfiguration="BasicHttpBinding_ISimpleWCF" contract="SimpleWCF.ISimpleWCF" 
      name="BasicHttpBinding_ISimpleWCF" /> 

Toute aide, explication, ou des pointeurs vers des articles pertinents seraient grandement appréciés. Un article expliquant comment les applications Silverlight appellent les services Web serait grandement apprécié.

Merci

Mike Thomas

Répondre

0

L'adresse dans le ClientConfig est l'adresse du service que vous "Added Service de référence" contre. Comme vous l'avez remarqué, ce n'est pas un chemin relatif. Pour overridde ce comportement, spécifiez l'URI de l'adresse dans le constructeur du client Service.

Aussi, vous avez vraiment besoin de Fiddler. Tu l'adoreras. Il aide à résoudre ces problèmes ainsi que les problèmes inter-domaines.

1

Dans votre fichier de configuration, l'adresse du point de terminaison est http://dellnov2006:2753/SimpleWCF.svc Il semble donc que vous essayez de vous connecter à cette adresse.

Avant de publier l'application, vous devez modifier cette adresse à http://localhost/Service/SimpleWCF.svc ou quelque chose à pointer exactement à votre service.

Le clientaccesspolicy.xml doit être dans ** c: \ inetpub \ wwwroot ** Mais vous n'avez besoin de ce fichier que si vous voulez accéder au service d'un hôte différent qui a été téléchargé. Je ne pense pas que vous en ayez besoin dans votre cas, si vous voulez utiliser localhost sur les iis locaux.

0

Merci beaucoup djjoyro. Tu avais raison. Modification du fichier de configuration à:

adresse de noeud final = "http: //MachineName/SilverlightTest/SimpleWCF.svc" binding = "basicHttpBinding" bindingConfiguration = "BasicHttpBinding_ISimpleWCF" contrat = "SimpleWCF.ISimpleWCF" name = "BasicHttpBinding_ISimpleWCF"

travaillé, et sans fichier de politique d'accès client. Cela a également fonctionné lorsque j'ai accédé à l'application Silverlight à partir d'autres ordinateurs du groupe de travail. J'ai également essayé d'utiliser localhost au lieu du nom de l'ordinateur, mais j'ai dû utiliser un fichier clientaccesspolicy et je n'ai pas pu accéder au service Web lorsque j'utilisais d'autres ordinateurs du groupe de travail.

Je dois en savoir beaucoup plus à ce sujet, mais au moins le déploiement fonctionne maintenant après plusieurs jours de difficultés.

Mike Thomas

0

tard à la fête, mais je vais ajouter que si votre adresse de liaison comprend un port #, vous utilisez toujours le serveur Web Visual Studio. http://dellnov2006:2753 est un cadeau mort que vous utilisez toujours le serveur Web VS et non IIS comme vous le vouliez.

Questions connexes