2010-03-24 4 views
2

J'ai donc déjà une implémentation fonctionnelle de StructureMap avec le service WCF (y compris le fournisseur d'instance sur mesure, comportements, etc.)WCF - StructureMap - objets Mise en cache pour la durée de la demande que

Lorsque je tente d'avoir un objet qui est instancié une seule fois par demande de l'utilisateur, j'utilise le InstanceScope.HttpContext et il se lève parce que le contexte est null.

Est-ce que quelqu'un a une bonne façon de le faire?

Répondre

2

Sur le côté serveur du service WCF? Par défaut, WCF n'a rien à voir avec ASP.NET et donc tous vos HttpContext etc. ne sont pas là. Par défaut, vos services WCF seront appelés "par appel", par exemple, par défaut. chaque requête obtient une instance totalement nouvelle, distincte et totalement isolée de votre classe de service. Pourquoi ne pas simplement mettre ces choses dans la classe de service en tant que champs internes ??

Ou vous pouvez consulter ce blog post sur la façon de résumer un état de demande et de fournir des exemples d'implémentations pour ASP.NET (en utilisant HttpContext.Items) et WCF.

+0

Je pensais vraiment à ce sujet ce matin en marchant au travail. L'hôte de service serait le meilleur endroit pour le stocker. Je verrai ce qui peut être fait. –

+0

@Maxim: oui, l'hôte de service pourrait être un autre endroit où accrocher les choses. Soyez conscient que l'hôte n'existe qu'une seule fois pour toutes les instances de classe de service existantes simultanément! Il est partagé entre toutes les instances de service - ce qui peut être une bonne ou une mauvaise fonctionnalité, selon ce que vous voulez réaliser. –

Questions connexes