ASP.NET:在应用程序的预启动初始化阶段,无法调用此方法

时间:2011-01-07 14:45:17

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

我正在尝试在IIS 6.0上运行ASP.NET MVC 3站点。

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

  

分析程序错误消息:在应用程序的预启动初始化阶段,无法调用此方法。

在这一行:

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

我完全难过,并且对ASP.NET应用程序生命周期没有太多线索,更不用说6.0和7.0之间的差异了。阅读它上面的MSDN页面似乎没什么帮助。

有没有人有任何见解或任何良好的调查链接? :)

5 个答案:

答案 0 :(得分:251)

在web.config中添加此内容(在appSettings部分中):

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

编辑:

对于那些问为什么的人来说,这是mvc 3 release notes中描述的已知问题 更多详情here

答案 1 :(得分:39)

将我的一些应用程序从ASP.NET MVC3升级到MVC4后,我遇到了这个错误。这是WebMatrix程序集(WebMatrix.WebData.dll和WebMatrix.Data.dll)的结果。我从/ bin目录中删除了那些引用和程序集,并解决了这个问题。

答案 2 :(得分:7)

@ Ek0nomik是对的。我们从MembershipProvider迁移到新ExtendedMembershipProvider,允许我们利用WebMatrix命名空间中提供的一些新功能。默认情况下,由于某种原因启用了简单成员身份,因此我们必须明确禁用它,因为我们不想使用SimpleMembershipProvider

我们所要做的就是将其添加到web.config:

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

启用简单成员资格会导致Provider初始化代码在Application_Start处理程序之前执行。我们的app结构要求App_Start是第一个执行的东西。我个人总是希望这个,但简单会员改变了这种行为。当心。

答案 3 :(得分:6)

好吧,我刚收到这个错误,这是因为我意外地将.cshtml复制到了项目的根目录中。它甚至没有被包括在项目中。删除了那个,错误就消失了。这是在IIS7上的MVC3。我想一些遇到这个问题的人都在同一条船上。

答案 4 :(得分:0)

这是由于在应用程序中过早发生的任何一些Reflection调用引起的。它恰好发生在其他答案中的Web.Config建议阻止了一个这样的反射调用。但就我而言:

我正在使用Entity Framework,并运行update-database。我得到了:

  

在应用程序的启动前初始化阶段,无法调用此方法。

事实证明,我们的代码使用了最近修改过的库,以获取所有命名空间/项目中的所有代码。具体来说,它叫:

System.Web.Compilation.BuildManager.GetReferencedAssemblies()

KABOOM。这造成了这个模糊的错误。 EF迁移在一个怪异区域中运行,其中应用程序运行一半而一半不运行,这意味着迁移将调用的任何代码都不能调用上述方法。