【问题标题】:What's the ASP.NET Webservice request lifecycle?什么是 ASP.NET Web 服务请求生命周期?
【发布时间】:2011-04-27 10:30:18
【问题描述】:

在常规的aspx 页面上,我有Page_InitPage_Unload 等事件,这些事件发生在in a well-defined order

我有一个asmx 页面,提供[WebMethod()]s。是否存在类似事件?特别是,允许​​我初始化一些数据(如Page_Load)和进行一些清理(如Page_Unload)的一些事件将非常有用。

(据我所知,asmx 代码隐藏类的构造函数似乎在每个 WebMethod 请求上都被调用,即为每个 WebMethod 请求创建一个新实例,但这只是一个观察和不是我在某处发现的记录...)

【问题讨论】:

  • 我要指出,这是相当依赖于实现的信息,尤其是考虑到 ASMX 已被 WCF 取代,WCF 具有完全不同的生命周期。

标签: c# .net asp.net web-services asmx


【解决方案1】:

是的 - Otavio 是正确的,ASMX Web 服务没有页面事件,因为它们不是从页面派生的。

但是,请求遵循常规的ASP.NET processing pipeline

在执行相关IHttpHandler的过程中有一个点。这可以是页面、通用 HTTP 处理程序或 Web 服务。

这是执行网络服务请求的地方。

所以,这实际上取决于您在这里尝试做什么。 ctor 应该为预请求执行提供一个很好的挂钩。如果您正在寻找更早的东西,那么您可能需要挂钩到 Global.asax 事件。

【讨论】:

    【解决方案2】:

    asmx 对象不是派生自 Page,而是派生自 System.Web.Services.WebService,因此它们不会包含您要查找的事件。

    【讨论】: