У меня есть некоторый код, который я хотел бы выполнить очень рано в жизненный цикл вызова к функции ASMX. Для наших страниц ASPX этот код находится в Page_Init () функция на базовом классе, которому все наши страницы ASPX наследовались.
Существует ли эквивалент ASMX Page_Init ASPX () функция?
Еще лучше существует ли схема жизненного цикла ASMX как ASPX один? http://msdn.microsoft.com/en-us/library/ms178472.aspx
Если существует эквивалент ASMX Page_Init (), я предполагаю, что могу реализовать код в общем базовом классе, которому все мои классы ASMX могут наследоваться, корректный?
Править: Большие ответы - благодарят за Вашу справку!
В веб-службе asmx такого нет, System.Web.Services.WebService не имеет событий. Лучше всего создать конструктор по умолчанию и поместить его туда.
например.
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class WebService1 : System.Web.Services.WebService
{
private string strRetVal;
public WebService1()
{
strRetVal = "Hello World";
}
[WebMethod]
public string HelloWorld()
{
return strRetVal;
}
}
Очень хороший вопрос!
Не совсем уверен, но я считаю, что выполнение веб-служб ASMX немного отличается от страниц ASPX - нет «жизненного цикла страницы» (то есть нет инициализации элементов управления для отображения HTML, поскольку ответ обычно представляет собой XML ).
Единственный вариант - подключиться к одному из событий приложения в Global.asax - единственное подходящее событие - Application_PreRequestHandlerExecute
.
Вы можете попробовать Application_BeginRequest
, но я считаю, что это только для запросов страниц ASP.NET, а не для вызовов веб-служб.
Другой вариант (как вы сказали) - создать базовый класс для ваших веб-сервисов, а затем вызвать общий базовый метод во всех ваших веб-методах в самой первой строке. Вам придется повторить этот вызов во ВСЕХ ваших веб-методах. Или, если у вас есть все ваши веб-методы в одном файле веб-службы (ASMX), просто создайте обычный статический метод (не украшайте его атрибутом WebMethod) и вызовите его.
У них нет похожих «жизненных циклов»
Единственные 2 «события» - это запрос и ответ.