ASMX相当于Page_Init?

时间:2010-06-29 20:56:04

标签: asp.net asmx page-lifecycle

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

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

更好的是,是否有像ASPX一样的ASMX生命周期图? http://msdn.microsoft.com/en-us/library/ms178472.aspx

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

修改 很好的回复 - 感谢您的帮助!

3 个答案:

答案 0 :(得分:9)

在asmx Web服务中确实没有这样的东西,System.Web.Services.WebService没有事件。你最好的办法是创建一个默认构造函数并将其放在那里。

e.g。

    [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;
        }
    }

答案 1 :(得分:4)

非常好的问题!

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

您唯一的选择是挂钩Global.asax中的一个Application事件 - 唯一合适的事件是Application_PreRequestHandlerExecute

您可以尝试Application_BeginRequest,但我相信这仅适用于ASP.NET页面请求,而不适用于Web服务调用。

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

答案 2 :(得分:0)

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

唯一的2个'事件'是请求和响应。