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>
36
demandé sur Nico 2013-07-11 09:23:52

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>

http://blogs.msdn.com/b/davidobando/archive/2012/08/14/changing-ef-s-default-provider-from-localdb-to-sql-server.aspx

21
répondu Brian 2017-08-29 15:56:26

faites ce qui suit dans L'application.fichier de configuration

  1. mettez le connectionStrings élément est après le configSections élément.
  2. mettez le startup après le connectionStrings é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>
70
répondu Diganta Kumar 2014-02-24 19:21:15

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.

4
répondu Ben Pretorius 2014-02-04 06:23:56

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

2
répondu Golden Griffin 2016-04-08 06:29:55

j'en ai eu plusieurs providers 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

1
répondu Luke 2015-05-25 13:58:04

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'."

1
répondu Matt Knight 2016-05-18 15:58:54

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

0
répondu AminSaghi 2013-07-30 10:13:40

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>
0
répondu Bala Kumar 2014-10-08 08:01:42

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>.

0
répondu Kevin Panko 2015-03-25 14:01:17

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.

0
répondu Oswaldo Alvarez 2015-03-25 14:02:01

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é.

0
répondu Stefan Michev 2015-08-29 13:50:36

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.

0
répondu malt 2015-10-28 07:43:29

j'ai affronté le même problème et changer defaultConnectionFactory pour être SqlConnectionFactory m'a aidé à le résoudre.

0
répondu Sudha Vijayakumar 2016-08-12 15:05:34

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

0
répondu Bala 2017-01-29 12:35:52

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

0
répondu Paul Totzke 2017-02-22 20:31:58

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.

0
répondu Bharat Raj 2018-04-12 07:42:54

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" />


0
répondu Chandrasekhar Telkapalli 2018-08-20 14:35:40