2008-10-26 7 views
1

J'héberge mon premier service WCF dans IIS. J'ai deux méthodes, 1 pour définir une variable de chaîne sur le service WCF, et l'autre pour le récupérer. L'interface utilisée est:WCF variable durée de vie/état

[OperationContract] 
string ReturnText(); 

[OperationContract] 
void SetText(string s); 

BasicHttpBinding est utilisé. Faire un pas à travers le service avec le débogueur du client révèle que la valeur de la chaîne est définie correctement en utilisant SetText, mais lorsque je fais immédiatement un texte de retour, la chaîne est de retour à null.

Probablement un simple que je connais, mais je pensais que toutes les valeurs sur le service WCF étaient conservées entre l'ouverture de la connexion de service et sa fermeture.

Pourquoi la valeur est-elle perdue entre Set et Gets?

Répondre

7

Par défaut, les choses sont sans session et les instances sont par appel. Voir

http://msdn.microsoft.com/en-us/library/ms731193.aspx

quelques informations de démarrage, mais afin d'avoir l'état à travers les appels, vous aurez soit besoin d'un PerSession ou simple mode instanciation sur le serveur, et dans le premier cas, configurer la liaison à sessions de support (de sorte que les deux appels puissent être corrélés suite à une connexion à une même session).

4

Merci Brian, ce lien contient les informations dont j'ai besoin. J'ai ajouté

[ServiceContract (SessionMode = SessionMode.Required)]

à mon interface/contrat et cela fonctionne automagiquement maintenant! Pour les valeurs volatiles, vous pouvez également simplement stocker la valeur dans une variable statique.

2

Cela maintient également son état à travers les appels, tant que l'hôte wcf n'est pas recyclé/redémarré