【发布时间】:2010-11-16 22:19:39
【问题描述】:
在 Application_Start 和 Application_Endrequest 中连接和运行一些代码而不必每次都将代码放入 MvcApplication 类中的首选方法是什么?
也许有一个事件、一个属性或我可以在 asp.net 4 中连接的东西?
【问题讨论】:
标签: asp.net-mvc-3 asp.net-4.0 webactivator
在 Application_Start 和 Application_Endrequest 中连接和运行一些代码而不必每次都将代码放入 MvcApplication 类中的首选方法是什么?
也许有一个事件、一个属性或我可以在 asp.net 4 中连接的东西?
【问题讨论】:
标签: asp.net-mvc-3 asp.net-4.0 webactivator
有很多events on the HttpApplication class。但是,您仍然需要一些能够引导事件连接的东西。
您可以查看PreApplicationStartAttribute。它允许您在应用程序编译之前连接代码以运行(尽管应用程序实例不会那么早可用)。
David Ebbo 还创建了一个类似的系统,称为 WebActivator。
【讨论】:
“允许您在编译应用程序之前连接代码以运行。”
这不是一个正确的说法。您创建的 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 属性,其中我相信你只能使用一次。
【讨论】: