ASMX, эквивалентный из Page_Init?

У меня есть некоторый код, который я хотел бы выполнить очень рано в жизненный цикл вызова к функции ASMX. Для наших страниц ASPX этот код находится в Page_Init () функция на базовом классе, которому все наши страницы ASPX наследовались.

Существует ли эквивалент ASMX Page_Init ASPX () функция?

Еще лучше существует ли схема жизненного цикла ASMX как ASPX один? http://msdn.microsoft.com/en-us/library/ms178472.aspx

Если существует эквивалент ASMX Page_Init (), я предполагаю, что могу реализовать код в общем базовом классе, которому все мои классы ASMX могут наследоваться, корректный?

Править: Большие ответы - благодарят за Вашу справку!

10
задан mikemanne 30 June 2010 в 17:06
поделиться

3 ответа

В веб-службе 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;
        }
    }
9
ответ дан 3 December 2019 в 23:48
поделиться

Очень хороший вопрос!

Не совсем уверен, но я считаю, что выполнение веб-служб ASMX немного отличается от страниц ASPX - нет «жизненного цикла страницы» (то есть нет инициализации элементов управления для отображения HTML, поскольку ответ обычно представляет собой XML ).

Единственный вариант - подключиться к одному из событий приложения в Global.asax - единственное подходящее событие - Application_PreRequestHandlerExecute .

Вы можете попробовать Application_BeginRequest , но я считаю, что это только для запросов страниц ASP.NET, а не для вызовов веб-служб.

Другой вариант (как вы сказали) - создать базовый класс для ваших веб-сервисов, а затем вызвать общий базовый метод во всех ваших веб-методах в самой первой строке. Вам придется повторить этот вызов во ВСЕХ ваших веб-методах. Или, если у вас есть все ваши веб-методы в одном файле веб-службы (ASMX), просто создайте обычный статический метод (не украшайте его атрибутом WebMethod) и вызовите его.

4
ответ дан 3 December 2019 в 23:48
поделиться

У них нет похожих «жизненных циклов»

Единственные 2 «события» - это запрос и ответ.

0
ответ дан 3 December 2019 в 23:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: