【问题标题】:ASP.NET Application Start without using Global.asax不使用 Global.asax 启动 ASP.NET 应用程序
【发布时间】:2010-12-04 13:12:16
【问题描述】:

我正在为网站开发一个类似应用程序的插件。由于要求,它将与我没有源代码的主网站位于相同的物理路径和相同的应用程序池中。所以它们都共享相同的 Web.config 和其他一些依赖项。

我需要在应用程序启动时为第三方依赖项设置许可证,但我无法访问 Global.asax 背后的代码,因为该代码归另一家公司所有。

那么,是否有另一种方法可以在不涉及 Global.asax 的情况下将事件附加到 Application Start,或者是我继承/扩展当前 Global.asax 的唯一解决方案?

【问题讨论】:

    标签: asp.net configuration global-asax


    【解决方案1】:

    您可以使用 HTTPModule:

    public class MyModule : IHttpModule
    {
        #region IHttpModule Members
    
        public void Dispose()
        {
        }
    
        public void Init(HttpApplication context)
        {
            ...
        }
    
        #endregion
    }
    

    web.config

    <httpModules>
      <add name="MyModule" type="MyNamespace.MyModule, MyAssembly" />
    </httpModules>
    

    【讨论】:

      【解决方案2】:

      如果您知道您的目标项目都是 .NET 4.0 或更高版本,则可以使用 WebActivator。

      https://github.com/davidebbo/WebActivator

      [assembly: WebActivatorEx.PostApplicationStartMethod(typeof(Bootstrapper), "Start")]
      
      public class Bootstrapper
      {
          public static void Start()
          {
              // Put everything in motion here
          }
      }
      

      请注意,您还可以选择在 Global.asax Application_Start() 函数之前或之后运行 - 此示例在之后运行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-13
        • 2014-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多