【问题标题】:Preferred way to setup and run code in Application_Start在 Application_Start 中设置和运行代码的首选方式
【发布时间】:2010-11-16 22:19:39
【问题描述】:

在 Application_Start 和 Application_Endrequest 中连接和运行一些代码而不必每次都将代码放入 MvcApplication 类中的首选方法是什么?

也许有一个事件、一个属性或我可以在 asp.net 4 中连接的东西?

【问题讨论】:

    标签: asp.net-mvc-3 asp.net-4.0 webactivator


    【解决方案1】:

    有很多events on the HttpApplication class。但是,您仍然需要一些能够引导事件连接的东西。

    您可以查看PreApplicationStartAttribute。它允许您在应用程序编译之前连接代码以运行(尽管应用程序实例不会那么早可用)。

    David Ebbo 还创建了一个类似的系统,称为 WebActivator

    【讨论】:

    • 如果我使用 PreApplicationStartAttribute 但可能使用 WebActivator 可能无法设置 EndRequest 事件
    • 要连接到 EndRequest,编写一个 IHttpModule 并将其注册到 Web.config 的 部分。
    【解决方案2】:

    允许您在编译应用程序之前连接代码以运行。

    这不是一个正确的说法。

    您创建的 WebActivator 类实际上会编译到程序集中,但允许您在运行时挂钩 3 个事件:

    1.) PreApplicationStartMethod 2.) PostApplicationSTART方法 3.) ApplicationShutdownMethod

    来自 David Ebbo 的描述:

    “WebActivator 是一个 NuGet 包,它允许其他包轻松地将启动和关闭代码引入 Web 应用程序。这提供了一个比使用许多包中的启动逻辑修改 global.asax 更简洁的解决方案。 "

    使用 WebActivator 不仅限于其他包的启动代码,它还可以用于您的应用程序的启动代码(引导)。

    例如,我在最近使用 MVC3 完成的一个项目中使用它来设置和配置我的 Unity 依赖项、我的 Combres 设置和我的 51DegreesMobi 设置。它允许我为每一个都拥有一个单独的类文件,而不会弄乱或在 Global.asax 中输入一行代码。

    它也是 .NET 4 PreApplicationStartMethod 更好的替代方案,因为您可以拥有许多具有 WebActivator.PreStartupMethod 的类,并且它们都将在 App-Start 之前运行,而不是 .NET 4 属性,其中我相信你只能使用一次。

    【讨论】:

      猜你喜欢
      • 2010-10-07
      • 1970-01-01
      • 2012-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-17
      • 2018-01-29
      • 1970-01-01
      相关资源
      最近更新 更多