Asp.net ASMX相当于Page_Init?

Asp.net ASMX相当于Page_Init?,asp.net,asmx,page-lifecycle,Asp.net,Asmx,Page Lifecycle,我想在调用ASMX函数的生命周期的早期执行一些代码。对于我们的ASPX页面,此代码位于基类上的Page_Init()函数中,所有ASPX页面都从该基类继承 是否存在与ASPX的Page_Init()函数等效的ASMX 更好的是,有没有像ASPX那样的ASMX生命周期图 如果有一个相当于Page_Init()的ASMX,我假设我可以在一个公共基类中实现代码,我的所有ASMX类都可以从中继承,对吗 编辑: 非常好的回答-谢谢你的帮助 问得好 不完全确定,但我相信ASMX Web服务的执行与ASPX页

我想在调用ASMX函数的生命周期的早期执行一些代码。对于我们的ASPX页面,此代码位于基类上的Page_Init()函数中,所有ASPX页面都从该基类继承

是否存在与ASPX的Page_Init()函数等效的ASMX

更好的是,有没有像ASPX那样的ASMX生命周期图

如果有一个相当于Page_Init()的ASMX,我假设我可以在一个公共基类中实现代码,我的所有ASMX类都可以从中继承,对吗

编辑: 非常好的回答-谢谢你的帮助

问得好

不完全确定,但我相信ASMX Web服务的执行与ASPX页面略有不同-没有“页面生命周期”(即没有初始化控件以呈现HTML-因为响应通常是XML)

您唯一的选择是挂接Global.asax中的一个应用程序事件-唯一合适的事件是
Application\u PreRequestHandlerExecute

您可以尝试
应用程序\u BeginRequest
,但我相信这只适用于ASP.NET页面请求,而不是Web服务调用


另一个选择(如您所说)是为web服务创建基类,然后在第一行调用所有web方法中的公共基类方法。您必须在所有web方法中重复此调用。或者,如果您的所有web方法都在一个web服务文件(ASMX)中,那么只需创建一个常规的静态方法(不要用WebMethod属性修饰它)并调用它。

在ASMX web服务中并没有这样的事情,System.web.Services.WebService没有事件。最好是创建一个默认构造函数并将其放入其中

e、 g


它们没有类似的“生命周期”


仅有的两个“事件”是请求和响应。

+1-好的一点。忘记了web服务调用是“无状态的”,所以将为每个web方法请求调用构造函数。很好。小心,所有的请求都会执行WebService1()构造函数(不会只发生一次)。比接受的anser imho路由更好。(特别是当您需要对请求上下文执行某些操作时。)
    [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;
        }
    }