2010-10-19 9 views
10
In una normale pagina aspx, ho eventi come Page_Init, Page_Unload, ecc., Che si verificano in a well-defined order.

Qual è il ciclo di vita della richiesta del servizio Web ASP.NET?

Ho una pagina asmx che fornisce [WebMethod()] s. Esistono eventi simili? In particolare, alcuni eventi che mi permettono di inizializzare alcuni dati (come Page_Load) e fare un po 'di pulizia (come Page_Unload) sarebbero estremamente utili.

(Per quanto posso dire, il costruttore della classe code-behind asmx sembra essere chiamato su ogni richiesta WebMethod, cioè, viene creata una nuova istanza per ogni richiesta WebMethod, ma questa è solo un'osservazione e non qualcosa che ho trovato documentato da qualche parte ...)

+0

Vorrei sottolineare che si tratta di informazioni piuttosto dipendenti dall'implementazione, soprattutto considerando che ASMX è stato praticamente sostituito da WCF, che ha un ciclo di vita totalmente diverso. –

risposta

9

Sì - Otavio è corretto, non ci sono eventi Page per i servizi Web ASMX, poiché non derivano da Page.

Tuttavia, la richiesta segue il regolare ASP.NET processing pipeline.

C'è un punto nel processo in cui viene eseguito il relativo IHttpHandler. Può trattarsi di una pagina, un gestore HTTP generico o un servizio Web.

Qui è dove si verifica l'esecuzione della richiesta di servizio web.

Quindi, dipende davvero da cosa si sta tentando di fare qui. Il Ctor dovrebbe fornire un buon hook-in per pre-richiedere l'esecuzione. Se stai cercando qualcosa anche prima, probabilmente avrai bisogno di collegarti a un evento Global.asax.

1

asmx Gli oggetti non derivano da Page, piuttosto da System.Web.Services.WebService, quindi non avranno gli eventi che stai cercando.

Problemi correlati