2010-05-11 6 views
0

J'ai un problème qui me trouble un peu, resp. où je n'ai aucune idée de ce que ça pourrait être.Problème étrange avec Webservice et IIS

Le système que j'utilise est Windows Vista, IIS 7.0, VS2008, Windows Software Factory, Entity Framework, WCF. La liaison pour tous les services Web est wshttpbinding. J'utilise un Webservice hébergé dans IIS. Ce Webservice utilise/appelle un autre Webservice (également installé dans IIS). Si j'utilise un client appelant le premier Webservice (qui appelle le deuxième Webservice) cela fonctionne bien pour environ 4-10 fois. Et puis (il est répétable d'avoir ce Problème, mais parfois ça arrive après 4, parfois après 10 Temps, mais ça arrivera toujours), le Service et l'IIS restent bloqués.

Bloqué signifie que ce Webservice n'est plus appelable et génère un timeout après 1 minute. Augmenter même Timeout ne change rien. Si j'essaie de redémarrer l'IIS, j'obtiens une erreur de timeout (ce qui m'embrouille vraiment) Il semble que le Webservice ait "crashé" et bloque le redémarrage de l'IIS. Donc l'IIS est aussi "coincé" (il n'est pas vraiment bloqué, mais je ne peux pas le redémarrer). Seulement si je tue le w3wp.exe IIS peut être redémarré et le Webservice fonctionnera encore (jusqu'à ce que j'appelle encore ce service plusieurs fois). Les fichiers journaux (je ne suis pas expert dans les choses comme la journalisation ou où trouver/activer ces journaux, pour ainsi dire: je suis un débutant) comme la journalisation http, l'Observateur d'événements ou la journalisation des messages WCF ne montrer des indices sur la source du problème.

Je n'ai pas ce problème lorsque j'utilise un service Web qui n'appelle pas un autre service. L'appel d'un Webservice est fait par Service Reference (j'utilise pas de classe Proxy), mais je pense que cela ne devrait pas poser de problème.

Je n'ai aucune idée de ce qui se passe, ni comment résoudre ce problème.

Cordialement René

Modifier. : J'espère que ma publication est plus lisible maintenant :-)

+0

Les paragraphes peuvent vous aider à obtenir plus de réponses - difficile à lire votre question. Quel est le code de votre service Web? Que fait l'autre webservice? Pouvez-vous poster du code? – Paddy

+0

Le code interroge une base de données pour obtenir des informations. C'est un simple DB-Read (fait avec Linq) qui ne renvoie qu'une chaîne. Donc, il n'y a rien de complexe dans le Code. Je l'ai testé aussi avec un code un peu plus complexe (plus complexe signifie qu'il y a plus de données retournées), mais là j'ai aussi ce problème. La seule solution-étape que j'ai pu essayer (avec mon knowlegde très limité sur le sujet entier) est de changer la liaison de wshttpbinding à basichttpbinding (aussi je dois utiliser wshttpbinding). – Rene

Répondre

0

insérez System.Diagnostics.Debugger.Break() dans votre code de service Web. Lorsque ce point est atteint, vous serez en mesure de parcourir la logique de service. Cela peut vous aider à diagnostiquer la cause de l'impasse.

Une autre alternative est de turn on WCF Tracing, et de diagnostiquer de cette façon.

Questions connexes