2010-11-23 5 views
1

Je sais que c'est un sujet brûlant sur StackOverflow, mais fais avec moi.Silverlight, WCF et NotFound, oh mon

Nous avons une application Silverlight 3 qui parle à un service WCF. De temps en temps, les appels au service WCF renvoient une exception NotFound.

J'ai lu à peu près tous les articles sur SO et Google sur ce sujet mais je n'arrive pas à comprendre ce qui ne va pas. Voici quelques unes de mes découvertes:

  • L'exception se produit sur des appels aléatoires et à des moments aléatoires. Parfois, une méthode fonctionnera 50 fois et, soudainement, elle causera des bugs. J'ai l'impression que c'est lié à un timeout, car il est plus reproductible si je laisse l'application inactive pendant un moment avant d'appeler un appel, mais ce n'est pas toujours le cas - parfois celui des premiers appels de l'application échoue.
  • Nous utilisons SilverlightFaultBehavior pour convertir le code d'erreur HTTP à 200 et nous avons beaucoup d'instances où lancer une exception sur le côté serveur fait des bulles du côté client, donc je peux confirmer que cela devrait fonctionner comme prévu. Fiddler ne montre rien de spécial au moment où l'exception se produit. Je ne vois même pas l'appel en question. Cela m'inquiète, mais cela pourrait signifier que l'exception est le résultat d'un appel qui s'est produit il y a quelques minutes et qui a expiré?
  • Service Trace Viewer ne montre rien.
  • Je joins Visual Studio au projet Silverlight et au projet de services WCF, définissez le débogage pour interrompre toutes les exceptions (levées ou traitées) et il ne se casse pas (sauf dans Silverlight pour me parler du problème NotFound). Cela me fait penser que peut-être le NotFound n'est pas en réponse à une exception du côté du service WCF?

Je n'ai vraiment aucune idée d'où aller à partir d'ici. Toute aide, tout pointeur ou idée de choses à essayer sont les bienvenus.

+0

Salut, je sais que c'est un vieux post mais j'ai le même problème. Avez-vous eu à résoudre ce problème? – Luis

Répondre

1

Voici quelques réflexions pour les points que vous avez mentionnés:

1) L'exception se produit sur les appels au hasard et à des moments aléatoires - Assurez-vous que les données envoyées en tant que valeur de retour de la méthode est valide. J'ai eu un cas lorsque l'envoi d'un objet avec des propriétés vides a causé un échec de sérialisation. Je l'ai trouvé en utilisant les journaux IIS/Service Trace Logs.

2) Avez-vous trouvé quelque chose d'utile?

3) Je ne pense pas que fiddler peut aider avec ce genre d'erreur.

4) Êtes-vous sûr de cela? Avez-vous configuré les journaux de suivi correctement?

5) Vous ne trouverez aucune exception qui peut vous aider ici. L'exception réelle (lorsque vous voyez une erreur "introuvable") est déclenchée lors de l'encapsulation du message/des données du côté serveur ou du déballage des messages/données côté client. Donc, pour résumer, assurez-vous que les données sont dans un format correct (cela peut sembler correct pour vous mais pas pour WCF, jouez avec lui pendant un certain temps avec des valeurs différentes) et vérifiez à nouveau la trace de journalisation.

+0

2) J'ai mentionné ceci pour éviter que les gens me disent que NotFound est juste le résultat d'une exception sur le serveur. Je n'en tire rien d'utile. 3) Je m'attendrais au moins à voir l'appel au service WCF, non? 4) Au meilleur de ma connaissance, oui. Je peux voir beaucoup d'activité qui se passe dans ces journaux - rien qui semble pertinent à mon problème. Ce qui me dérange le plus, c'est qu'il est très difficile de s'assurer que les données sont dans un format correct car je ne sais pas quels appels vont échouer avant, et Fiddler ne m'aide pas à dire quelles données sont envoyées sur le fil. – efdee

+0

Oh, et le fait que cela a commencé à sortir de nulle part, apparemment. Je suis certain que certains de mes collègues ou moi-même avons apporté des modifications, mais cela semble se produire partout maintenant. Et très aléatoirement. – efdee

+0

"et Fiddler n'est d'aucune aide pour dire quelles données sont envoyées sur le réseau" - C'est pourquoi j'ai dit que cela ne peut pas être d'une grande aide dans ce scénario. – decyclone

1

Qu'est-ce qu'une liaison du service? Où est-il hébergé: serveur IIS ou VS Deployment? J'ai vu ce problème récemment, quelque chose n'allait pas avec IIS. Il ne pouvait même pas ouvrir les fichiers * .svc. Voici donc un plan d'activités:

  1. Essayez d'ouvrir le fichier svc en utilisant l'adresse http comme http://localhost/MyApp/MyService.svc
  2. Si elle ouvre, écrire une application console et tester le service.
  3. Si cela fonctionne, écrire une application simple Silverlight.

J'espère que cela aidera.

+0

En général tout cela fonctionne. L'application Silverlight peut réussir des centaines de succès et échouer soudainement une fois avec ce message d'erreur. Je suis en train de tester avec le serveur de développement VS, j'espère qu'une fois que je déploierai à IIS, le problème disparaîtra mais même alors, c'est une nuisance lors du développement. – efdee

0

Je fixe en ajoutant

minFreeMemoryPercentageToActivateService="1" 

à Web.config. Par défaut, il est

minFreeMemoryPercentageToActivateService="5" 

qui provoque parfois cette erreur.