将System.Data.Entity的声明添加到我的web配置后,我收到此错误: 在应用程序级别之外使用注册为allowDefinition ='MachineToApplication'的部分是错误的。此错误可能是由于未在IIS中将虚拟目录配置为应用程序引起的。
我删除了obj和bin文件夹,我删除了行身份验证=“windows”,尝试重新打开,因为有人说它有效,我检查了主文件夹中只有1个web.config(实体框架) - 表格,型号,DAL和BLL的文件夹)......
还有什么其他原因会发生这种情况?我到处搜索,基本上是我发现的上述原因......
这是我的web.config,如果它有所不同:
<configuration>
<connectionStrings>
<add name="ApplicationServices"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient" />
<add name="CStringVKB" connectionString="Data Source=.;Initial Catalog=VKB;Persist Security Info=True;User ID=websiteservice;Password=websiteservice" providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<compilation debug="true" optimizeCompilations="true" targetFramework="4.0" >
<assemblies>
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</assemblies>
</compilation>
<!--<authentication mode="Windows">
<forms loginUrl="~/Account/Login.aspx" timeout="2880" />
</authentication>-->
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
applicationName="/" />
</providers>
</membership>
<profile>
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
</providers>
</profile>
<roleManager enabled="false">
<providers>
<clear/>
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
<add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
</providers>
</roleManager>
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
我该怎么做才能解决这个问题?
答案 0 :(得分:23)
基本上,错误意味着您的一个子文件夹中有一个web.config文件,该文件具有不应具有的配置元素。这是你的root / only web配置文件吗?如果没有,你也可以发布这些吗?
此外,这听起来很愚蠢,但我会仔细检查你是否在IDE中打开网站(而不是错误地打开父文件夹)我看到人们花了几个小时试图调试同样的错误,当时他们一直没有在正确的目录中。
以下是关于如何为ASP设置web.config层次结构的一个很好的解释,它将帮助您可视化其工作原理:http://scottonwriting.net/sowblog/archive/2010/02/17/163375.aspx
答案 1 :(得分:1)
显然我的解决方案中有两个web.config文件。我正在使用MVC4,在Views下有另一个配置文件,我正在更改错误的文件。修复了帮助我。
但您可以随时更改global.asax文件中的默认重定向/路由。
答案 2 :(得分:0)
Chris Noreikis的回答其实是正确的。但遗漏了一个重要的细节。如果出于某种原因,您使用与最初创建的VS版本不同的VS版本打开项目/解决方案,VS将尝试迁移。在此迁移期间,VS偶尔会创建一个名为“backup”或“backup _ {#}”的文件夹。即使您撤消挂起的更改此迁移强制,这些目录仍然存在。
这些目录的存在在某些情况下(如我的)是导致此错误的原因。删除这些目录将消除此问题。
我希望这可以节省一些人在这个问题上失去的无数个小时。