“System.Data.Entity.Internal.AppConfig”的types初始值设定项引发exception
我在MVC 4 aspnet网站上使用EF5。 在本地,一切正常,但是当我发布到IIS并尝试进入,我得到的错误
“System.Data.Entity.Internal.AppConfig”的types初始值设定项引发了一个exception。“
详细的例外
创buildentityFramework的configuration节处理程序时发生错误:在应用程序configuration中多次指定了DbContexttypes“GdpSoftware.Server.Data.GdpSoftwareDbContext,GdpSoftware.Server.Data”的configuration。 每个上下文只能configuration一次。 (E:\ App \ web.config第104行)
我在StackOverflow中检查了上一个问题,并且已经通过Nuget EntityFramework卸载并重新安装,并且检查了每个项目中对它的每个引用是EF5。 我也检查了每个项目中选定的框架是4.5。
任何想法,什么可能会导致这个问题? 谢谢! 吉列尔莫。
web.config中
<?xml version="1.0" encoding="utf-8"?> <!-- For more information on how to configure your ASP.NET application, please visit http://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> <configSections> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections> <connectionStrings> <add name="GdpSoftwareConnectionString" connectionString="Persist Security Info=False;User ID=user;Password=password;Initial Catalog=databasename;Data Source=server" providerName="System.Data.SqlClient" /> <add name="GdpSoftware.Server.Data.GdpSoftwareDbContext" connectionString="GdpSoftware.Server.Data.GdpSoftwareDbContext_ConnectionString" providerName="System.Data.SqlClient"/> <add name="GdpSoftware.Server.Ui.Web.Models.UsersContext" connectionString="GdpSoftware.Server.Ui.Web.Models.UsersContext_ConnectionString" providerName="System.Data.SqlClient"/> </connectionStrings> <appSettings> <add key="webpages:Version" value="2.0.0.0" /> <add key="webpages:Enabled" value="false" /> <add key="PreserveLoginUrl" value="true" /> <add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" /> </appSettings> <system.web> <compilation debug="true" targetFramework="4.5" /> <httpRuntime targetFramework="4.5" /> <authentication mode="Forms"> <forms loginUrl="~/Account/Login" timeout="2880" /> </authentication> <pages> <namespaces> <add namespace="System.Web.Helpers" /> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Optimization" /> <add namespace="System.Web.Routing" /> <add namespace="System.Web.WebPages" /> </namespaces> </pages> <!-- BEGIN - TO SEE THE ERRORS ON THE DEPLOYMENT--> <customErrors mode="Off" /> <!-- END - TO SEE THE ERRORS ON THE DEPLOYMENT--> </system.web> <system.webServer> <!-- BEGIN - TO SEE THE ERRORS ON THE DEPLOYMENT--> <httpErrors errorMode="Detailed" /> <asp scriptErrorSentToBrowser="true" /> <!-- END - TO SEE THE ERRORS ON THE DEPLOYMENT--> <validation validateIntegratedModeConfiguration="false" /> <handlers> <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" /> <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" /> <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> </handlers> <staticContent> <mimeMap fileExtension=".mustache" mimeType="text/plain" /> </staticContent> <security> <requestFiltering> <fileExtensions> <add fileExtension=".mustache" allowed="true" /> </fileExtensions> </requestFiltering> </security> </system.webServer> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Castle.Windsor" publicKeyToken="407dd0808d44fbdc" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-3.2.0.0" newVersion="3.2.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.Owin.Host.SystemWeb" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-1.0.0.0" newVersion="1.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Castle.Core" publicKeyToken="407dd0808d44fbdc" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-3.2.0.0" newVersion="3.2.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> <entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> <contexts> <context type="GdpSoftware.Server.Data.GdpSoftwareDbContext, GdpSoftware.Server.Data" disableDatabaseInitialization="true"> <databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[GdpSoftware.Server.Data.GdpSoftwareDbContext, GdpSoftware.Server.Data], [GdpSoftware.Server.Data.Migrations.Configuration, GdpSoftware.Server.Data]], EntityFramework" /> </context> </contexts> </entityFramework> </configuration>
我需要通过defaultConnectionFactory更改为SqlConnectionFactory而不是默认值
<entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"> <parameters> <parameter value="<My Connection String>" /> </parameters> </defaultConnectionFactory> </entityFramework>
在App.config文件中执行以下操作,
- 将
connectionStrings
元素放在configSections
元素之后。 - 将
startup
元素放在connectionStrings
元素之后。
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> </configSections> <connectionStrings> <add name="SchedulingContext" connectionString="Data Source=XXX\SQL2008R2DEV;Initial Catalog=YYY;Persist Security Info=True;User ID=sa;Password=XXX" providerName="System.Data.SqlClient"/> </connectionStrings> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> </configuration>
我发现删除对Entity Framework的引用并从NuGet安装最新版本的Entity Framework解决了这个问题。 它会在安装过程中为您重新创build所有必需的条目。
我已经在这个问题上打破了头脑,最后这是对我有用的东西:
第一步:使用Nuget包pipe理器卸载entity framework
第2步:从App.config中删除Entityframework元素
第3步:重新安装所需的entity framework版本。
第四步:删除Migrations表和Migrations文件夹。
第5步:启用迁移并添加迁移和更新数据库
我有我的web.config中指定的多个provider
。
<providers> <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" /> <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider> </providers>
我只是删除其中的一个,它的工作。
我使用MySQL虽然,而不是TSQL
我遇到了这个问题,当我忘记将我的Connections.config文件设置为“始终复制”
BareMessage =“无法打开configSource文件”Connections.config“。”
我认为这个问题是从这一行开始的:
<context type="GdpSoftware.Server.Data.GdpSoftwareDbContext, GdpSoftware.Server.Data" disableDatabaseInitialization="true">
我不知道你为什么使用这种方法,它是如何工作的…
也许最好从web.config中解脱出来,换个angular度来看
如果您要为app.config维护一个更多的configuration文件,请不要在父页面中包含任何密钥。
父页面:app.config
<appSettings configSource="appSettings.config"> <add key="ClientSettings" value="venice" /> <!-- Don't add Key Here --> </appSettings>
子页面:appSettings.config
<appSettings> <add key="ClientSettings" value="venice"/> <!-- add Here --> </appSettings>
我有同样的问题。 一天之后,我明白了。
问题是在<system.net>
下的mailSettings
添加了两个smtp
标记。
在你的web.config
或App.Config
search,如果你有一些标签没有在你的项目中使用,或者你没有在你的参考。
我今天有一个嵌套的MVC应用程序在其他MVC应用程序中作为虚拟文件夹运行的错误。 在我的情况下,InnerException比主要的更有价值。 这是说:
- The entry 'DbContextMain' has already been added. (C:\inetpub\...\web.config line x)
在嵌套的应用程序中修复重复的连接string后,一切正常。
如果您使用ASP.NET和IISExpress转到“C:\ Users \ Documents \ IISExpress \ config \ applicationhost.config”,search您的项目并查看是否有错误的virtualDirectory条目。
我面临类似的问题,改变defaultConnectionFactory为SqlConnectionFactory帮助我解决它。
引发实际错误消息= Web.config文件中的无法识别的元素“提供者”,以便从web.config文件中删除提供者部分
一般问题只涉及Machine / Web / Appconfiguration的任何问题。
我在我的App.Config Machine.Config中有相同的连接string,所以我把我的第一个连接string之前我的App.Config
- C#mvc 3使用select列表中的选定值
- 创build一个数组或两个date之间的所有date列表
- 如何保持AppDomain中的ASP.NET程序集活着?
- 无法在MVC4 Web API中加载文件或程序集“System.Net.Http,Version = 2.0.0.0”
- 如何查看HttpWebRequest类发送的原始HTTP请求?
- ASP.NET WebHooks和Signal-R的区别
- Json.Net中的PreserveReferencesHandling和ReferenceLoopHandling有什么区别?
- ASP.NET MVC如何将ModelState错误转换为json
- 我怎样才能得到我的web应用程序的基本URL在ASP.NET MVC?