NET: 此方法不能在应用程序的预启动初始化阶段调用

我正在尝试让一个 ASP.NET MVC 3站点在 IIS6.0上运行。

目前,当我从服务器请求一个页面时,它会出现以下错误:

解析器错误消息: 在应用程序的预启动初始化阶段不能调用此方法。

在这条线上:

<add name="MyMembershipProvider" type="NS.MyMembershipProvider" connectionStringName="MyDatabase" applicationName="/MySite"/>

我完全被难住了,对 ASP.NET 应用程序的生命周期一无所知,更不用说6.0和7.0之间的区别了。通读 MSDN 页面似乎没有多大帮助。

有没有人对此有什么见解或者有什么好的链接可供调查? :)

50831 次浏览

将其添加到 web.config (在 appSettings 部分) :

<add key="enableSimpleMembership" value="false"/>
<add key="autoFormsAuthentication" value="false"/>

编辑:

对于那些问为什么的人来说,这是 mvc 3发布说明中描述的一个已知问题 更多细节 < a href = “ http://brockallen.wordpress.com/2011/06/01/beware-bin-department-of-mvc-and-shar-with-formsauthentication/”rel = “ noReferrer”> here

在将我的一些应用程序从 ASP.NET MVC3升级到 MVC4之后,我得到了这个错误。它是 WebMatrix 程序集(WebMatrix。Dll 和 WebMatrix。Dll).我从/bin 目录中删除了这些引用和程序集,并解决了这个问题。

我刚刚得到这个错误,它是由于不小心复制了一个。将 cshtml 放到我的项目的根目录中。它甚至没有包括在这个项目中。删除它,错误就消失了。这是 IIS7上的 MVC3。我想有些人也有同样的问题。

@ Ekomik 是对的。我们从 MembershipProvider迁移到新的 ExtendedMembershipProvider,这使我们能够利用 WebMatrix名称空间中提供的一些新功能。默认情况下,简单成员资格是由于某种原因而启用的,所以我们不得不明确禁用它,因为我们不想使用 SimpleMembershipProvider

我们所要做的就是把它添加到 web.config:

<add key="enableSimpleMembership" value="false"/>

启用简单成员资格导致在 Application _ Start 处理程序之前执行提供程序初始化代码。我们的应用程序结构要求 App _ Start 是首先执行的。就个人而言,我总是期望这一点,但简单会员制改变了这一行为。小心。

这是由于在应用程序中过早地进行了许多反射调用中的任何一个引起的。网络就是这样。其他答案中的配置建议阻止了发出这样的反射调用。然而,就我而言:

我正在使用实体框架,运行 update-database:

不能在应用程序的预启动初始化阶段调用此方法。

事实证明,我们的代码使用了一个库,这个库最近被修改以获得所有名称空间/项目中的所有代码。具体来说,它叫做:

System.Web.Compilation.BuildManager.GetReferencedAssemblies()

砰。造成了这个模糊的错误。EF 迁移运行在一个奇怪的区域,应用程序一半运行,一半不运行,这意味着上面的方法永远不能被任何迁移调用的代码调用。