2009-05-06 3 views
4

Mon constructeur de service Web est appelé chaque fois que j'appelle une méthode web. Cela cause quelques problèmes avec certaines nouvelles fonctionnalités que j'ajoute et je n'arrive pas à comprendre ce que je fais de mal à cause de cela. Le seul endroit où je commence le webservice est dans Application_Start de global.asax.cs, mais si je supprime le code à new le webservice, il appelle toujours le constructeur chaque fois que j'appelle un webmethod. Je l'ai testé en parcourant le fichier .asmx et en appelant le webmethod de cette façon et j'ai également créé une application de console de test qui fait référence au webservice et appelle les méthodes de cette façon. Les deux donnent les mêmes résultats. J'utilise C# dans ASP.NET 1.1. Des idées?

Edit:
Je suis en train de créer un fil de rythme cardiaque que les sondages un service de fenêtres. Je tente d'enregistrer le résultat dans une table de hachage (plusieurs threads interrogeant plusieurs services). J'ai changé le webmethod (comme il a utilisé pour interroger le service Windows) pour obtenir les résultats de la hashtable. Nous essayons d'augmenter la vitesse de cet appel webmethod.Pourquoi mon constructeur WebService est-il appelé chaque fois que j'appelle une méthode web?

Répondre

18

Chaque fois que vous appelez une méthode Web, une nouvelle instance du service Web est créée. Il s'agit du comportement attendu. Les services Web sont sans état, ce qui signifie qu'une instance du service n'est pas maintenue active entre les appels de méthode Web. Par conséquent, vous ne pouvez pas stocker d'état dans les membres (champs, propriétés) du service Web.

Si vous souhaitez enregistrer des valeurs/état entre des appels de méthode Web, vous devez utiliser la session ASP.NET ou une base de données à cette fin.

Voir cette question pour plus de détails: Is this supposed to work this way?

+0

Merci très très mush, vraiment la meilleure réponse, vraiment merci! –

0

Euh ... ce genre est de par la conception que j'ai peur. Pouvez-vous décrire les problèmes que vous rencontrez et ce que vous essayez d'accomplir, je pense que vous devez refactoriser votre conception un peu ici.

+0

Édité le message original pour décrire ce que nous essayons de faire. –

0

Vous pouvez également passer à WCF qui prend en charge les services stateful

+0

Malheureusement, nous sommes "coincés" avec le cadre 1.1 pour cette version –

Questions connexes