Le type initialiseur pour ' système.Données.Entité.Interne.AppConfig ' a fait une exception
je travaille avec EF5 sur un site MVC 4 aspnet. Localement, tout fonctionne très bien, mais quand je le publie à L'IIS et que j'essaie d'entrer, j'obtiens l'erreur
"L'initialiseur de type pour 'Système.Données.Entité.Interne.AppConfig' a déclenché une exception."
Exception détaillée
une erreur s'est produite lors de la création de la section de configuration handler pour entitefram framework: Configuration pour le type DbContext "GdpSoftware.Serveur.Données.Gdpsoftwaredbcontexte, GdpSoftware.Serveur.Données " est spécifié plusieurs fois dans le configuration de l'application. Chaque contexte ne peut être configuré qu'une seule fois. (E:Appweb.config la ligne 104)
j'ai vérifié la question précédente dans StackOverflow, et j'ai déjà désinstallé et réinstallé par Nuget Entityfram Framework et vérifié que chaque référence à celui-ci dans chaque projet est EF5. J'ai également vérifié que le cadre choisi pour chaque projet 4.5.
N'importe quelle idée, ce qui pourrait être la cause du problème? Merci! Guillermo.
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.NETFrameworkv4.0.30319aspnet_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.NETFramework64v4.0.30319aspnet_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>
17 réponses
j'ai dû changer par defaultConnectionFactory pour être SqlConnectionFactory au lieu de la valeur par défaut
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
<parameters>
<parameter value="<My Connection String>" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
faites ce qui suit dans L'application.fichier de configuration
- mettez le
connectionStrings
élément est après leconfigSections
élément. - mettez le
startup
après leconnectionStrings
élément.
<?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>
j'ai trouvé que supprimer les références à Entity Framework et installer la dernière version de Entity Framework à partir de NuGet a corrigé le problème. Il recrée toutes les entrées nécessaires pour vous pendant l'installation.
j'ai cassé ma tête sur cette question, et enfin, voici ce qui a fonctionné pour moi:-
Step1 : désinstaller Entity framework en utilisant Nuget package manager
Étape 2: Supprimer L'élément Entitefram Framework de L'application.config
Step3: réinstaller la version désirée du Framework Entity.
Étape 4: supprimer la table Migrations et le dossier Migrations.
Step5: activer les Migrations et ajouter la Migration et mettre à jour la base de données
j'en ai eu plusieurs provider
s spécifié dans mon web.config.
<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>
j'en ai simplement enlevé un et ça a marché.
j'utilise MySQL cependant, pas TSQL
j'ai rencontré ce problème quand j'ai oublié de régler mes connexions.fichier de configuration pour "copy"
BareMessage = "Impossible d'ouvrir le configSource fichier 'Connexions.config'."
je pense que le problème vient de cette ligne:
<context type="GdpSoftware.Server.Data.GdpSoftwareDbContext, GdpSoftware.Server.Data" disableDatabaseInitialization="true">
je ne sais pas pourquoi vous utilisez cette approche et comment il fonctionne...
peut-être qu'il vaut mieux essayer de le sortir de web.config et aller dans une autre
si vous maintenez encore un fichier de cinfiguration pour app.config, N'incluez aucune clé dans la page parent.
page Parent: app.config
<appSettings configSource="appSettings.config">
<add key="ClientSettings" value="venice" /> <!-- Don't add Key Here -->
</appSettings>
<appSettings>
<add key="ClientSettings" value="venice"/> <!-- add Here -->
</appSettings>
j'ai eu le même problème. Après un jour, je l'ai eu.
Problème a été d'ajouter deux smtp
les balises mailSettings
<system.net>
.
Rechercher dans votre web.config
ou App.Config
si vous avez quelques balises qui ne sont pas utilisés dans votre projet ou que vous n'avez pas dans vos références.
j'ai eu cette erreur aujourd'hui sur une application MVC imbriquée fonctionnant comme un dossier virtuel dans une autre application MVC. Dans mon cas, L'InnerException était plus informative que la principale. Il était en déclarant:
- The entry 'DbContextMain' has already been added. (C:\inetpub\...\web.config line x)
après avoir fixé les chaînes de connexion dupliquées dans les applications imbriquées, tout a bien fonctionné.
si vous utilisez ASP.NET and IISExpress go to "C:\Users\\Documents\IISExpress\config\applicationhost.config", cherchez votre projet et cherchez si vous avez une entrée virtualDirectory défectueuse.
j'ai affronté le même problème et changer defaultConnectionFactory pour être SqlConnectionFactory m'a aidé à le résoudre.
message d'erreur lancé réel=élément non reconnu 'providers' dans web.config donc, à partir du web.fichier de configuration supprimer la section fournisseurs
la question générale est juste n'importe quelle question impliquant Machine/Web/applications configs.
j'avais les mêmes chaînes de connexion dans la Machine.Config comme dans mon application.Config que j'ai mis avant ma première chaîne de connexion dans mon Application.Config
cette erreur étrange se produit, quand vous jouez avec différentes versions D'Entitefram Framework dans des paquets Nuget comme je l'ai fait.
D'abord, désinstallez la DLL de votre Framework Entity à partir des paquets NuGet, puis nettoyez l'application.config. En supprimant l'entrée de l'élément configSections et entity framework.
Ensuite, installez la version souhaitée. Cela devrait résoudre le problème.
j'ai également fait face au même problème, mais dans mon cas ma solution a une application de console et une bibliothèque de classe EF qui interagit principalement avec la base de données. J'ai supprimé les paramètres de configuration liés à EF de la Console Application Config. J'ai maintenu les paramètres de configuration suivants dans la bibliothèque de classe EF I. e seulement à un endroit.
Cela a fonctionné pour moi.
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.2.61023.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<add name="EntityModel" connectionString="Server=Localhost\SQLEXPRESS;Database=SampleEntities;Trusted_Connection=True;" providerName="System.Data.EntityClient" />