我正在尝试在IIS 6.0上运行ASP.NET MVC 3站点。
目前,当我从服务器请求页面时,它会出现以下错误:
分析程序错误消息:在应用程序的预启动初始化阶段,无法调用此方法。
在这一行:
<add name="MyMembershipProvider" type="NS.MyMembershipProvider" connectionStringName="MyDatabase" applicationName="/MySite"/>
我完全难过,并且对ASP.NET应用程序生命周期没有太多线索,更不用说6.0和7.0之间的差异了。阅读它上面的MSDN页面似乎没什么帮助。
有没有人有任何见解或任何良好的调查链接? :)
答案 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迁移在一个怪异区域中运行,其中应用程序运行一半而一半不运行,这意味着迁移将调用的任何代码都不能调用上述方法。