2010-10-19 4 views
10

На обычной странице aspx у меня есть такие события, как Page_Init, Page_Unload и т. Д., Которые происходят in a well-defined order.Что такое жизненный цикл запроса ASP.NET Webservice?

У меня есть страница asmx с указанием [WebMethod()]. Существуют ли подобные события? В частности, некоторые события, которые позволяют мне инициализировать некоторые данные (например, Page_Load) и выполнять некоторую очистку (например, Page_Unload), были бы чрезвычайно полезными.

(Насколько я могу судить, конструктор класса кода asmx, по-видимому, вызывается в каждом запросе WebMethod, т. Е. Для каждого запроса WebMethod создается новый экземпляр, но это всего лишь наблюдение, а не что-то, что я где-то нашел где-то ...)

+0

Я хотел бы указать, что это довольно зависящая от реализации информация, особенно учитывая, что ASMX в значительной степени заменен WCF, который имеет совершенно другой жизненный цикл. –

ответ

9

Да - Otavio правильно, для веб-служб ASMX не существует страниц, поскольку они не происходят из страницы.

Однако запрос следует за обычным ASP.NET processing pipeline.

Существует момент, в котором выполняется соответствующий IHttpHandler. Это может быть страница, общий HTTP-обработчик или веб-служба.

Здесь происходит выполнение запроса веб-службы.

Итак, это действительно зависит от того, что вы пытаетесь сделать здесь. Ctor должен обеспечить хороший крючок для предварительного запроса исполнения. Если вы ищете что-то еще раньше, вам, вероятно, придется подключиться к событию Global.asax.

1

asmx объекты не являются производными от страницы, а не от System.Web.Services.WebService, поэтому у них не будет событий, которые вы ищете.

Смежные вопросы