9
votes

C # Comment initialiser Webservice

est-il possible d'initialiser un service Web.

Je recherche une méthode qui ne fonctionne que pendant le premier appel à Webservice. Y a-t-il quelque chose comme ça dans .net?


0 commentaires

5 Réponses :


17
votes

si vous avez besoin de "initialisation", la première fois qu'un client donné se connecte au service Web :

avoir une méthode initiale qui renvoie un jeton, un tel guide, qui est alors requis sur chaque appel apporté à la méthode "de travail" réelle de votre service Web. Vous pouvez alors vous assurer que pour ce client, le service est toujours initialisé.

Si vous en avez besoin, la première fois que le service Web est appelé :

Ajoutez du code à votre service, en tant que méthode privée, appelée en haut de chaque méthode publique. En savoir avoir l'existence de quelque chose, tel qu'une entrée de registre, un fichier, un enregistrement de base de données ou une autre valeur persistante. Si cela n'existe pas, effectuez votre initialisation puis créez le "quelque chose".

Si vous en avez besoin sur le premier appel depuis IIS Dernier recyclé / démarré le pool d'applications :

avoir un constructeur statique pour la classe de sorte que lorsqu'il est instancié, le constructeur statique fonctionne et effectue votre initialisation.


0 commentaires

0
votes

Eh bien, il n'y a pas d'équivalent à l'initialisation J2EE si c'est ce que vous êtes après ... Cependant, chaque application Web est hébergée dans un domaine d'application. De temps en temps, une application peut être recyclée et un nouveau domaine d'application peut être créé ...


0 commentaires

4
votes

Lorsque vous créez une application Webservice dans Visual Studio, par défaut, un "service" de classe nommé sera ajouté. Lorsque vous regardez le code de cette classe (Service.cs), vous verrez un constructeur («Service public ()») avec deux lignes commentées. Vous pouvez soit mettre votre code d'initialisation ici, soit appeler une méthode privée que vous avez définie à l'intérieur de la classe de service. Ce constructeur s'appellera uniquement lorsque votre client appelle son premier appel à n'importe quel WebMethod dans la classe de service.


0 commentaires

5
votes

Si vous essayez d'initialiser une ressource utilisée par le service Web et que vous souhaitez uniquement l'initialiser une fois par application, vous pouvez utiliser l'événement Application_Start sur le global.aSax. Sachez que IIS recyclera le pool de candidatures chaque fois que le pool d'applications mange trop de ressources.

Si vous devez initialiser la variable de niveau de classe, vous pouvez le faire dans le constructeur du service Web. Je recommanderais contre cela, car votre service Web devrait être apatride. Si vous devez initialiser une ressource statique une fois dans votre service Web, vous pouvez utiliser un constructeur statique.

Si vous avez besoin d'une seule ressource disponible une fois sur votre candidature, je vous recommanderais de regarder dans le modèle Singleton.


0 commentaires

0
votes

Vous pouvez utiliser Application_Start dans global.asax, il s'exécutera une fois si un service WebService à l'intérieur de votre projet s'appelle


0 commentaires