2010-03-09 2 views
3

J'essaie d'accéder à l'instance singleton créée par mon service WCF mais .SingletonInstance semble être nulle même après .Open est appelée sur le ServiceHost.Est-il possible d'obtenir une référence à une instance WCF ServiceHost Singleton avant l'arrivée de la première requête client WCF?

Existe-t-il un moyen de forcer le ServiceHost à créer l'instance avant l'arrivée de la première requête du client WCF (qui génère automatiquement l'instance singleton)?

Répondre

2

Vous pouvez appeler le service lui-même ...
L'instance n'est en effet créée que lorsqu'une requête entre, vous ne pouvez pas accéder à ce qui n'y est pas encore.

Mais sérieusement, essayez de contourner ce problème. Qu'est-ce que vous en avez besoin pour ce que vous ne pouvez pas faire dans le constructeur de la classe d'implémentation?

+1

Merci de confirmer que (et c'est une idée intéressante sur lui-même appeler). J'essaye d'ajouter des écouteurs à un événement qui existe dans le singleton afin que je puisse garder le singleton aussi réutilisable que possible. Heureux de regarder une alternative si c'est l'approche incorrecte avec WCF. Longue histoire courte j'essaye de produire quelques statistiques sur un formulaire de fenêtres basé sur les demandes entrant. – InvertedAcceleration

0

.... vous pourriez être en mesure de faire des choses folles avec un IInstanceContextProvider personnalisé ... devinez ce n'est pas la peine si ....

8

Je sais que cette question est un peu vieux, mais je Je fais face à un problème similaire et pense que j'ai trouvé une solution. Il existe une version du constructeur ServiceHost qui prend une référence à l'instance plutôt que le type: http://msdn.microsoft.com/en-us/library/ms585487.aspx#Y342

Vous pouvez donc créer l'instance en premier, puis la transmettre au constructeur ServiceHost. Je n'ai pas encore essayé, mais on dirait que ça devrait faire l'affaire. Assurez-vous de lire les remarques sur la libération de l'instance. lorsque vous utilisez ce constructeur.

+1

Cela devrait être la réponse choisie. – Kobor42

+0

Je sais que cette réponse est un peu ancienne, mais je suis confronté au même problème maintenant. J'ai essayé le constructeur alternatif, l'hôte s'ouvre sans erreur, mais le client ne peut plus s'y connecter. Avez-vous eu ce travail? Si oui, un exemple serait tellement génial – GuidoG

+0

Désolé, mais je ne peux pas vous aider. Je n'ai pas travaillé avec WCF dans quelques années et je n'ai pas accès au code source pertinent. Je sais seulement que j'ai réussi à le faire fonctionner avec ce constructeur, mais je ne me souviens d'aucun détail. –

0

Vous pouvez utiliser le constructeur de votre classe et magasin instance d'objet lors de sa création par la WCF ServiceHost

Questions connexes