Dépannage du déploiement d'une solution Services RIA

Dépanner une solution Services RIA WCF constitue un défi unique du fait qu'une exception peut se produire au niveau de chacune des nombreuses couches. Vous devez comprendre comment ces différentes couches génèrent des erreurs afin de dépanner efficacement votre application. Cette rubrique donne une description de ces couches et décrit plusieurs techniques permettant de dépanner vos applications Services RIA en cas de survenue d'une exception. Par ailleurs, un grand nombre des problèmes que vous pouvez rencontrer lors du déploiement de Services RIA ont été anticipés dans le nouveau guide de déploiement. Pour plus d'informations, consultez Guide de déploiement des solutions Services RIA.

Flux d'exceptions

Dans une application Services RIA , les exceptions surviennent dans l'ordre suivant, de la couche la plus basse jusqu'au client :

  1. Service de domaine

  2. Hôte du service RIA Services

  3. WCF

  4. ASP.NET

  5. IIS

  6. Application Silverlight

Flux d'exceptions de couches

Activer les informations d'erreur détaillées ASP.NET

Par défaut, l'élément customErrors d'un fichier Web.config est défini sur RemoteOnly, ce qui signifie qu'un client distant ne reçoit pas les informations d'erreur détaillées ASP.NET. Pour déboguer votre application, désactivez customErrors (Off) afin de voir l'erreur ASP.NET détaillée depuis le client.

noteRemarque :
Ne rendez pas votre application disponible publiquement lorsque vous désactivez customErrors (Off) car le message d'erreur risque d'exposer des informations sensibles aux utilisateurs.

Utiliser Fiddler pour passer en revue les erreurs

Toutes les exceptions émanant d'un service de domaine sont envoyées au client Silverlight avec un code d'état d'erreur de 200. Toutes les exceptions levées au niveau de la couche WCF ou à un niveau inférieur sont envoyées au client Silverlight avec un code d'état de 404. Vous pouvez exécuter le débogueur HTTP Fiddler pour voir l'erreur proprement dite.

Accéder directement au service de domaine

Il est souvent utile d'accéder directement au fichier .svc de votre service de domaine afin de voir si le service WCF est disponible. Toutefois, déterminer le chemin d'accès au fichier .svc n'est pas simple car le fichier .svc n'existe pas dans votre solution. Vous pouvez accéder directement au service de domaine dans un navigateur Web en suivant le format suivant :

http://[hôte]/[nom de classe modifié pour le service de domaine].svc

Pour déterminer le nom de classe modifié, utilisez le nom de classe complet et remplacez chaque point (.) par un trait d'union (-). Exemple : un service de domaine nommé :

ExampleApplication.Web.CustomerDomainService

comporte un fichier .svc nommé :

ExampleApplication-Web-CustomerDomainService.svc

Si ce fichier est hébergé sur localhost, vous pouvez accéder directement au fichier en navigant à l'adresse :

https://localhost/ExampleApplication-Web-CustomerDomainService.svc

Si le service est disponible, vous verrez une page Web affichant des informations sur les services et expliquant comment tester un service. Si le service n'est pas disponible, vous verrez une page d'erreur pouvant contenir des informations qui vous aideront à déterminer le problème. Si vous recevez une erreur, c'est que l'exception provient probablement de la couche de l'hôte de service Services RIA.

Remplacer la méthode OnError du service de domaine

Lorsqu'une erreur irrécupérable se produit pendant le traitement d'une opération DomainService, la méthode OnError est appelée. Vous pouvez remplacer cette méthode pour inspecter les erreurs avant qu'elles ne soient envoyées au client.

Utiliser des techniques de suivi WCF traditionnelles

Le dépannage des exceptions au niveau de la couche WCF s'effectue comme pour dépanner n'importe quel autre service WCF. Pour plus d'informations sur le suivi de diagnostic des services WCF, consultez Suivi.

Une exception qui provient de la couche WCF n'apparaît pas dans Fiddler. Vous pouvez dépanner une exception de service en essayant d'accéder au fichier .svc. Si vous parvenez à accéder au fichier .svc sans générer d'erreur, mais que le service échoue au moment de l'exécution, il se peut que l'exception provienne de la couche WCF.

Vérifier les paramètres ASP.NET et IIS

Concernant les exceptions levées au niveau des couches ASP.NET et IIS, les informations émanant de votre application Services RIA ne sont pas incluses dans la pile. Vous pouvez voir les exceptions à ce niveau dans les cas suivants :

  • Le fichier Web.config ne dispose pas de l'élément HttpModule correct pour la version d'IIS que vous utilisez.

  • WCF n'est pas activé sur votre serveur Web.