Si vous hébergez vous-même (c'est-à-dire écrivez votre hôte WCF vous-même) - assurez-vous, sans problème, de faire ce que vous devez faire avant d'appeler .Open()
sur le ServiceHost
.
ServiceHost host = new ServiceHost(typeof(YourServiceClass));
// do your initialization here
........
host.Open();
Si vous utilisez IIS ou WAS ou AppFabric pour héberger votre service WCF: Je doute, puisque ceux-ci sont « message basé » serveur d'activation, par exemple ils démarrent un hôte de service pour gérer une requête à la demande, lorsqu'une requête arrive, et je ne connais aucun point d'extension pour entrer dans le processus d'initialisation si vous utilisez la classe ServiceHost
habituelle pour l'hébergement.
Cela dit: vous pouvez de définir bien sûr vos propres descendants de ServiceHost
- dériver votre hôte de service personnalisé à partir ServiceHost
ou ServiceHostBase
- ceux-ci devraient vous donner des points pour entrer dans le processus d'initialisation (redéfinissant la méthode InitializeRuntime
, ou de répondre à la Opening
un événement).
Voir les MSDN docs:
- ServiceHostBase classe de base abstraite pour les hôtes un service personnalisé
- ServiceHost en tant que mise en œuvre concrète de
ServiceHostBase
pour éventuellement hériter de
- Custom Service Host expliquant les tenants et les aboutissants de la façon de accomplir tout cela
Qu'essayez-vous de faire? Quand vous dites 'avant que le service ne commence', voulez-vous dire avant d'appeler 'Open' sur votre' ServiceHost'? –
Je l'ai expliqué dans l'édition dans le message principal. Je n'écris pas ma propre application hôte, je profite simplement de la capacité VS2010 pour exécuter le service WCF défini dans le projet de type 'WCF Servcice Library'. – mgamer
Auto-hôte a une signification spécifique dans WCF, http://msdn.microsoft.com/en-us/library/system.servicemodel.servicehost.aspx Je recommanderais de changer votre titre –