ASMX эквивалент Page_Init? - PullRequest
10 голосов
/ 30 июня 2010

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

Есть ли ASMX, эквивалентный функции Page_Init () ASPX?

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

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

EDIT: Отличные отзывы - спасибо за вашу помощь!

Ответы [ 3 ]

9 голосов
/ 30 июня 2010

В веб-сервисе 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;
        }
    }
4 голосов
/ 30 июня 2010

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

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

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

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

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

0 голосов
/ 30 июня 2010

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

Единственными 2 «событиями» являются Запрос и Ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...