【发布时间】:2014-09-27 16:58:00
【问题描述】:
我的问题是,是否有另一种方式,例如在类级别位置,我可以执行 Global.cs 中的所有应用程序方法,例如“Application_PreRequestHandlerExecute”oal 或“Application_Start”?主要目标是我想将所有这些应用程序方法隐藏到应用程序的已编译 dll 中,并将它们从 Global.cs 中取出。
谢谢
【问题讨论】:
标签: c# asp.net global-asax
我的问题是,是否有另一种方式,例如在类级别位置,我可以执行 Global.cs 中的所有应用程序方法,例如“Application_PreRequestHandlerExecute”oal 或“Application_Start”?主要目标是我想将所有这些应用程序方法隐藏到应用程序的已编译 dll 中,并将它们从 Global.cs 中取出。
谢谢
【问题讨论】:
标签: c# asp.net global-asax
您无法控制单个 aspx/单个类级别的应用程序执行流程。因为对于所有类,只有一个应用程序,它通过请求管道(预请求处理程序、请求等)。这就是为什么我们有 HTTPModule 来拦截那些管道事件。
但无论如何,我认为您可以在这些事件中应用过滤器,如果请求是针对 abc.aspx,则只为该类执行 XYZ。
以下链接,可能会更有帮助 - http://blogs.msdn.com/b/tmarq/archive/2007/08/30/iis-7-0-asp-net-pipelines-modules-handlers-and-preconditions.aspx
【讨论】:
您可以将 Global.ascx 中的方法转换为“单行”,以调用在您的 dll 中公开的 API。例如Application_Start() 可以调用myClass.ApplicationStart() 和Application_PreRequestHandlerExecute 可以调用myClass.PreRequestHandlerExecute。只需在您的应用程序命名空间中定义 public static myClass 并决定您的 API。然后在Global.cs 中导入myClass 命名空间。
【讨论】: