2 votes

Valider un service WCF au démarrage

J'ai un service WCF, hébergé dans IIS, et je veux vérifier que les paramètres de configuration sont valides, par exemple que le répertoire de journalisation existe ou peut être créé. Si la configuration échoue, je veux considérer le service comme invalide et le notifier via le journal des événements, etc. Idéalement, le service devrait être indisponible s'il est invalide.

Si je l'hébergeais en tant que service Windows, je pourrais le faire facilement. Mais hébergé dans IIS ? Je ne connais pas de bon moyen de rendre le service indisponible à partir du code.

Des idées ? Si cela peut vous aider, le service WCF fonctionne dans son propre pool d'applications.

TIA ! Jacques

2voto

odyth Points 2016

Si vous levez une exception, le service ne sera pas disponible. Donc, dans le constructeur de votre service, faites vos vérifications et si tout est parfait, si ce n'est pas le cas, levez une exception et le service ne sera pas disponible. Si les erreurs à distance sont désactivées, la navigation vers le service montrera l'erreur et la trace de la pile.

2voto

alexdej Points 2457

D'autres affiches ont suggéré de lancer le service à partir du constructeur de votre service. Cette approche fonctionnera bien, mais une meilleure approche serait d'implémenter un ServiceHostFactory personnalisé (http://msdn.microsoft.com/en-us/library/aa702697.aspx) et de faire la validation dans la méthode CreateServiceHost. L'avantage de cette approche est que l'erreur de validation fera partie du rapport d'erreur et de la page HTML "Le service n'a pas pu être activé".

0voto

kpadmanabhan Points 1028

J'ai une méthode privée dans le service appelée test qui retournera un booléen faux, si le répertoire de connexion n'existe pas ou ne peut pas être créé, etc.

Appeler cette méthode de test à partir du constructeur du service. Si la méthode renvoie un résultat faux, envoyez une information claire indiquant que le service est hors service.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X