2009-12-09 7 views
0

J'ai une solution d'application Web Silverlight avec un service WCF activé Silverlight inclus. Tout a bien fonctionné au cours des 6 derniers mois. Je peux accéder aux données via le service sans problème.Silverlight activé port de service WCF brusquement changé

Je suis entré au travail aujourd'hui, j'ai ouvert la solution, l'ai exécutée à nouveau et soudainement, il y a une discordance entre le port de service WCF et le port que Silverlight veut utiliser pour accéder au service.

Comment et pourquoi le port changerait soudainement?

Comment spécifier un port à utiliser? Je n'ai jamais spécifié un port dans le passé - ça a juste marché. Je ne trouve pas de spécification de port dans le fichier web.config ou le fichier CS de service.

Répondre

3

On dirait que vous parlez d'une solution à l'intérieur visual studio, vous pouvez voir le port par défaut en cliquant sur la propriété de projet Web, accédez à l'onglet Web, dans la section « Serveurs », vous verrez le numéro de port par défaut, vous manuellement attribuer un port spécifique ou utiliser un port d'affectation automatique.

J'ai déjà vu une situation similaire, c'est arrivé quand le port est utilisé. Vous pouvez réaffecter le port en modifiant le numéro de port dans la propriété du projet, recompiler la solution Web, puis mettre à jour la référence du service Web dans votre projet client. J'espère que cela aide.

+0

C'est exactement ça. Je sais que j'avais vu un endroit pour définir un port spécifique, mais je ne l'ai pas trouvé jusqu'à environ 30 secondes après avoir posté cette question. Apparemment, mon timing était juste un peu éteint. – Klay

0

Le service WCF est-il hébergé dans IIS? Est-ce que quelqu'un a changé une configuration IIS? Lorsque vous hébergez dans IIS, le nom du serveur IIS, le port, le répertoire virtuel et le nom et l'emplacement du fichier * .svc définissent votre adresse de service côté serveur. Si l'un de ces changements -> votre service ne sera plus disponible.

1

Utilisez-vous le serveur Web Cassini intégré? Et le service Web WCF fait-il partie du même projet Web que votre page d'hébergement? Ou est-ce un projet séparé?

Si vous utilisez Cassini, le port sur lequel il écoute dans un environnement de développement est spécifié dans la page des propriétés du projet, dans l'onglet "Web". Normalement, Visual Studio affecte automatiquement un port, mais si vous l'utilisez comme service Web, vous devez lui indiquer le port spécifique à utiliser (par exemple, 51000 ou un autre). Il peut toujours avoir par défaut le même port, mais s'il détecte que ce port est utilisé (peut-être par une autre instance de Cassini sur votre machine qui ne s'est jamais quittée), il changera de port.

Vous devez également vérifier le fichier ServiceReferences.ClientConfig dans votre projet Silverlight pour voir à quel port il essaie de se connecter.

+0

Je ne sais pas si cela est une bonne pratique, mais je mis a voté cette réponse parce que le scénario que vous décrivez (où le port était utilisé parce qu'une autre instance de l'application n'a pas quitté correctement) était très probablement ce qui s'est passé. Cette réponse ajoute des informations de diagnostic utiles à la réponse que j'ai acceptée. – Klay

+0

Il existe d'autres avantages à spécifier un port, par exemple, pouvoir écrire des tests d'intégration capables d'appeler le service de manière fiable sans modification de la configuration. C'est ce que je fais généralement quand je travaille avec des projets combinés Silverlight/ASP.NET/WCF. –

0

Vous pourriez avoir un autre logiciel qui a commencé à utiliser le port (Skype a attrapé me dans le passé)

Questions connexes