2010-11-13 23 views
0

J'essaye de comprendre comment obtenir un handle sur les endpoints de l'hôte de service et modifier leur identité. J'ai des points de terminaison définis dans le fichier de configuration mais je veux modifier les points de terminaison par programme en fonction de l'environnement (ex: QA, UAT, Prod)Puis-je modifier Endpoint après son ajout à l'hôte de service?

Le service est hébergé sur IIS6 et j'utilise un servicehostfactory pour fournir ma classe servicehost étendue à IIS. J'utilise l'événement d'ouverture pour obtenir un contrôle sur les points de terminaison qui sont déjà définis à partir du fichier de configuration, mais je n'arrive pas à comprendre comment modifier leur identité. Est-ce que c'est possible? Les points d'extrémité sont-ils immuables après leur création?

Si je ne peux pas modifier les points de terminaison, l'événement "Opening" de l'hôte de service est-il l'événement correct pour ajouter un point de terminaison de service?

Répondre

2

Les hôtes de service ne sont pas immuables tant qu'ils ne sont pas ouverts. Vous pouvez modifier la description d'un point de terminaison après avoir appelé AddServiceEndpoint. Quand vous parlez d'événement d'ouverture, voulez-vous dire que vous avez sous-classé ServiceHost et que vous surpassez OnOpening? Si c'est le cas, c'est un bon endroit pour ajouter des points de terminaison. Sinon, si vous utilisez votre propre ServiceHostFactory, vous pouvez simplement ajouter vos points de terminaison après avoir appelé base.CreateServiceHost.

+0

Merci pour la réponse Jeff. L'ajout des points de terminaison après l'appel de base.CreateServiceHost est une bonne idée. Dans mon cas, je n'appelle pas explicitement AddServiceEndpoint. J'ai mes définitions dans le fichier de configuration et après qu'elles soient définies par le clr, je veux modifier leur identité en fonction de l'environnement. Je veux faire un changement minimum avec le code et je veux que tout le reste de la configuration soit fait par le clr via le fichier de configuration. Est-ce que c'est quelque chose qui peut être fait ou dois-je les définir complètement en codant? – user507040