【问题标题】:What does WebActivator do?WebActivator 是做什么的?
【发布时间】:2011-08-14 07:57:27
【问题描述】:

此代码是在使用 NuGet 为 SQL Server CE 添加实体框架代码优先后为我生成的。他们没有对任何其他文件进行任何更改。文件SQLCEEntityFramework.cs 已创建并放置在App_Start 文件夹中。

这是否意味着它会自动执行或其他什么?当我为 MVC 3 添加 Ninject 时发生了同样的事情。global.ascx 文件中没有添加任何代码,所以我不知道它是即插即用还是我必须配置一些东西。

[assembly: WebActivator.PreApplicationStartMethod(typeof(StackTorrents.WebUI.App_Start.SQLCEEntityFramework), "Start")]

【问题讨论】:

标签: asp.net-mvc asp.net-mvc-3 ninject ef-code-first


【解决方案1】:

根据:

http://haacked.com/archive/2010/05/16/three-hidden-extensibility-gems-in-asp-net-4.aspx

这个新属性允许你拥有 代码在 ASP.NET 的早期运行方式 应用程序启动时的管道。 我的意思是很早,甚至在之前 应用程序_开始。这发生在 也位于 App_code 中的代码之前 文件夹(假设您有任何代码 那里)已编译。要使用这个 属性,创建一个类库和 将此属性添加为程序集 等级属性。一个常见的地方添加 这将在 AssemblyInfo.cs 属性文件夹中的类。

【讨论】:

  • .NET 框架中的 PreApplicationStartMethodAttribute 每个程序集只允许一个。最重要的是,WebActivator 提供了它自己的属性实现,允许每个程序集有多个实例。
  • @Ed Chapel - 这是否意味着当我从 nuget 和 ninject 导入 SQLCE4 时,两者都有一个 PreApplicationStartMethod。只会随机执行一个?
  • 我不知道 SQLCE4,但 ninject 使用 WebActivator。我敢肯定,如果您坚持使用 WebActivator 属性,那么所有 PreApplicationStartMethod 属性都会运行。
  • 我很高兴找到了这个。你不能再在 google 中搜索 Stack Overflow Exceptions 了。
【解决方案2】:

为了澄清,它为您提供了一种挂钩多个应用程序启动和应用程序关闭事件的方法,而无需更改任何现有代码文件(以前您必须编辑 Globals.asax.cs)。

这在制作包时很重要,因为这些事件对于引导 Http 模块非常有用,而且很难将代码写入现有文件。

【讨论】:

    猜你喜欢
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 2011-11-01
    • 2010-11-24
    • 2015-04-27
    • 2012-02-28
    相关资源
    最近更新 更多