2009-04-16 10 views
2

Un service WCF est hébergé dans un service Windows (WS).Comment tuer son propre service Windows

Lorsque la base de données (SqlServer 2005) tombe en panne, une exception SqlException est générée en raison des actions effectuées sur la base de données. Ce que je veux accomplir est que le WS - où le service de WCF est hébergé - devrait descendre quand la DB est également en panne.

Le WS sera redémarré manuellement en passant.

Mon idée est de ne rien faire à ce sujet. L'exception non gérée va arrêter le WS.

Est-ce la bonne façon de procéder?

Répondre

2

Si vous souhaitez arrêter explicitement votre service Windows, appelez simplement la méthode .Stop() sur votre classe de service.

Les services Windows peuvent être configurés pour redémarrer automatiquement en cas d'erreur - il suffit donc de laisser le flux SqlException atteindre le sommet.

Marc

+0

Le 1er scénario que vous montrerez va forcer mon pour attraper sur le SqlException, puis arrêter le service Windows lui-même. Le 2ème scénario est peu déroutant pour moi: si je configure mon WS pour redémarrer en cas d'erreur, le fait de faire bouillir le SqlException va redémarrer le WS, ce serait donc la solution. –

+0

1er scénario: Je pensais que c'était ce que vous demandiez - non? 2ème scénario: il s'agit d'une fonctionnalité du contrôleur de service Windows standard - vous pouvez spécifier ce qu'il faut faire lors de la première, de la deuxième et de la troisième défaillance d'un service - le redémarrage n'étant qu'une des options. –

1

Tout d'abord, vous devez détecter que le serveur SQL est tombé de l'exception SQLException que vous obtiendrez. Deuxièmement pourquoi tuer le webservice au lieu de renvoyer une erreur au client en disant que le service est en panne temporairement pour telle et telle raison.

+0

Le deuxième point: le client veut de cette façon, aucune discussion, pffff –

+0

C'est assez stupide ... Alors, quand la DB est de retour, ils doivent redémarrer manuellement? –

+0

@Rob: oui, c'est ce qu'ils font ... –

Questions connexes