在Application_Start中设置和运行代码的首选方法

时间:2010-11-16 22:19:39

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

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

也许有一个事件,一个属性或者我可以在asp.net 4中挂钩的东西?

2 个答案:

答案 0 :(得分:3)

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

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

David Ebbo还创建了一个名为WebActivator的类似系统。

答案 1 :(得分:2)

这不是一个正确的声明,“允许您在应用程序编译之前连接代码以运行。

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

1。)PreApplicationStartMethod 2.)PostApplicationSTartMethod 3.)ApplicationShutdownMethod

来自David Ebbo的解释:

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

使用WebActivator不仅限于其他软件包的启动代码,它也可以用于您的应用程序的启动代码(bootstrapping)。

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

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