代码之家  ›  专栏  ›  技术社区  ›  mikemanne

asmx等同于page_init?

  •  10
  • mikemanne  · 技术社区  · 14 年前

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

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

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

    如果有一个asmx等价于page_init(),我假设我可以在一个公共的基类中实现代码,我的asmx类可以从中继承,对吗?

    编辑: 很好的回答-谢谢你的帮助!

    3 回复  |  直到 14 年前
        1
  •  9
  •   Coding Flow    14 年前

    在asmx Web服务中没有这样的东西,system.web.services.web service没有事件。您最好创建一个默认的构造函数并将其放入其中。

    例如

        [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;
            }
        }
    
        2
  •  4
  •   RPM1984    14 年前

    很好的问题!

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

    您唯一的选择是钩住global.asax中的一个应用程序事件-唯一合适的事件是 Application_PreRequestHandlerExecute .

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

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

        3
  •  0
  •   Ed B    14 年前

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

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