2010-10-19 7 views
10

Sur une page normale aspx, j'ai des événements tels que Page_Init, Page_Unload, etc., qui se produisent in a well-defined order. J'ai une page asmx fournissant [WebMethod()] s. Des événements similaires existent-ils? En particulier, certains événements qui me permettent d'initialiser certaines données (comme Page_Load) et de faire un peu de nettoyage (comme Page_Unload) seraient extrêmement utiles. (Pour autant que je sache, le constructeur de la classe code-behind asmx semble être appelé sur chaque requête WebMethod, c'est-à-dire qu'une nouvelle instance est créée pour chaque requête WebMethod, mais ce n'est qu'une observation et non quelque chose que j'ai trouvé documenté quelque part ...)Quel est le cycle de vie des demandes ASP.NET Webservice?

+0

Je tiens à souligner qu'il s'agit d'informations assez dépendantes de l'implémentation, d'autant plus qu'ASMX a été remplacé à peu près par WCF, qui a un cycle de vie totalement différent. –

Répondre

9

Oui - Otavio est correct, il n'y a pas d'événement Page pour les services Web ASMX, car ils ne dérivent pas de Page.

Toutefois, la demande suit la norme ASP.NET processing pipeline.

Il existe un point dans le processus où le IHttpHandler concerné est exécuté. Cela peut être une page, un gestionnaire HTTP générique ou un service Web.

C'est ici qu'intervient l'exécution de la requête de service Web. Donc, cela dépend vraiment de ce que vous essayez de faire ici. Le ctor devrait fournir un bon hook-in pour pré-requérir l'exécution. Si vous recherchez quelque chose encore plus tôt, vous devrez probablement vous connecter à un événement Global.asax.

1

asmx Les objets ne sont pas dérivés de la page, plutôt de System.Web.Services.WebService, donc ils n'auront pas les événements que vous recherchez.