it-swarm.com.de

Der Typinitialisierer für 'System.Data.Entity.Internal.AppConfig' hat eine Ausnahme ausgelöst

Ich arbeite mit EF5 in einer MVC 4-Aspnet-Website . Lokal funktioniert alles einwandfrei, aber wenn ich es auf dem IIS veröffentliche und versuche, es einzugeben, erhalte ich den Fehler

"Der Typ-Initialisierer für 'System.Data.Entity.Internal.AppConfig' Hat eine Ausnahme ausgelöst."

Detaillierte Ausnahme

Fehler beim Erstellen des Konfigurationsabschnittshandlers für entityFramework: Konfiguration für DbContext-Typ 'GdpSoftware.Server.Data.GdpSoftwareDbContext, GdpSoftware.Server.Data 'wird mehrfach in .__ angegeben. Anwendungskonfiguration. Jeder Kontext kann nur einmal konfiguriert werden. (E:\App\web.config Zeile 104)

Ich habe die vorherige Frage in StackOverflow überprüft und bereits über Nuget EntityFramework deinstalliert und erneut installiert. Außerdem wurde überprüft, ob es sich bei jedem Verweis darauf in jedem Projekt um EF5 handelt. Ich habe auch überprüft, dass der ausgewählte Rahmen in jedem Projekt 4.5 ist.

Irgendeine Idee, was könnte das Problem verursachen? Danke! 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.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>
36
polonskyg

Ich musste von defaultConnectionFactory so ändern, dass es SqlConnectionFactory anstelle des Standardwerts ist

<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-von-localdb-to-sql-server.aspx

22
Brian

Führen Sie in der App.config-Datei Folgendes aus:

  1. Setzen Sie das connectionStrings-Element nach dem configSections-Element.
  2. Fügen Sie das Element startup nach dem Element connectionStrings ein.
<?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>
73
Diganta Kumar

Ich habe festgestellt, dass das Problem durch das Entfernen der Verweise auf Entity Framework und die Installation der neuesten Version von Entity Framework von NuGet behoben wurde. Während der Installation werden alle erforderlichen Einträge für Sie neu erstellt.

4
Ben Pretorius

Ich hatte mehrere providers in meiner web.config angegeben.

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

Ich habe einfach eine davon entfernt und es hat funktioniert.

Ich benutze zwar MySQL, nicht TSQL

2
Luke

Ich habe mir bei diesem Thema den Kopf gebrochen, und schließlich ist hier das, was für mich funktioniert hat: -

Schritt 1: Deinstallieren Sie das Entity Framework mit dem Nuget Package Manager

Schritt 2: Löschen Sie das Entityframework-Element aus App.config

Schritt 3: Installieren Sie die gewünschte Version von Entity Framework erneut.

Schritt 4: Löschen Sie die Migrationstabelle und den Migrationsordner.

Schritt 5: Aktivieren Sie die Migrationen und fügen Sie die Migrations- und Update-Datenbank hinzu

2
Golden Griffin

Ich habe dieses Problem festgestellt, als ich vergessen habe, meine Connections.config-Datei auf "Immer kopieren" zu setzen.

BareMessage = "KonfigSource-Datei 'Connections.config' kann nicht geöffnet werden."

1
Matt Knight

Ich hatte diesen Fehler heute bei einer verschachtelten MVC-Anwendung, die als virtueller Ordner in einer anderen MVC-Anwendung ausgeführt wird. In meinem Fall war die InnerException informativer als die Hauptausnahme. Es wurde gesagt:

- The entry 'DbContextMain' has already been added. (C:\inetpub\...\web.config line x)

Nachdem die doppelten Verbindungszeichenfolgen in den verschachtelten Apps korrigiert wurden, funktionierte alles einwandfrei.

0
Stefan Michev

In der Verbindungszeichenfolge ist die erste Zeichenfolge die Basis in web.config 

SchedulingContext ist der Basisparameter der Entity-Datei.

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

0

Ich hatte das gleiche Problem. Nach einem Tag habe ich es verstanden.

Das Problem bestand darin, zwei smtp-Tags in mailSettings unter <system.net> hinzuzufügen.

0

in meinem Fall hat das Hinzufügen von <clear /> unmittelbar nach <connectionStrings> wie ein Zauber gewirkt

0
bax 1188

Das allgemeine Problem ist nur ein Problem, das Maschinen-/Web-/App-Konfigurationen betrifft.

Ich hatte in Machine.Config die gleichen Verbindungszeichenfolgen wie in meiner App.Config, daher habe ich meine erste Verbindungszeichenfolge in meiner App.Config eingefügt

0
Paul Totzke

Ich war mit einem ähnlichen Problem konfrontiert und die Einstellung von defaultConnectionFactory zu SqlConnectionFactory hat mir bei der Lösung geholfen.

0

Wenn Sie eine weitere Konfigurationsdatei für app.config verwalten, geben Sie keinen Schlüssel auf der übergeordneten Seite an.

Übergeordnete Seite: app.config

<appSettings configSource="appSettings.config">
    <add key="ClientSettings" value="venice" /> <!-- Don't add Key Here -->
</appSettings>

Untergeordnete Seite: appSettings.config

<appSettings>
  <add key="ClientSettings" value="venice"/> <!-- add Here -->
</appSettings>
0
Bala Kumar

Ich denke, das Problem ist aus dieser Zeile:

<context type="GdpSoftware.Server.Data.GdpSoftwareDbContext, GdpSoftware.Server.Data" disableDatabaseInitialization="true">

Ich weiß nicht, warum Sie diesen Ansatz verwenden und wie es funktioniert ... 

Vielleicht ist es besser zu versuchen, es aus der web.config herauszuholen und einen anderen Weg zu gehen

0
Amin Saqi

Ich war auch mit dem gleichen Problem konfrontiert. In meinem Fall verfügt meine Lösung jedoch über eine Konsolenanwendung und eine EF-Klassenbibliothek, die hauptsächlich mit der Datenbank interagiert. Ich habe die Konfigurationseinstellungen für EF aus der Console-Anwendungskonfiguration entfernt. Ich habe die folgenden Konfigurationseinstellungen in der EF-Klassenbibliothek gespeichert, d. H. Nur an einer Stelle.

Das hat bei mir funktioniert.


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


Ich hatte die doppelte Definition der Verbindungszeichenfolge in meinem WCF-Dienst. Ich konnte den Dienst debuggen und die innere Fehlermeldung sehen (standardmäßig nicht angezeigt):

ConfigurationErrorsException: The entry 'xxxEntities' has 
already been added. (C:\Users\WcfService\web.config line 35). 

das war nach der web.config-Transformation (notiere doppelte Werte)

<connectionStrings>
    <add name="xxxEntities" connectionString="metadata=res://*/ ...
    <add name="xxxEntities" connectionString="metadata=res://*/ ...

Daher löste das Entfernen der unerwünschten Verbindungszeichenfolge mein Problem.

0
Honza P.

ist ein Fehler aufgetreten Message = Unbekanntes Element 'provider' in web.configso aus der Datei web.config entfernt den Provider-Abschnitt

0
Bala

Suchen Sie in Ihrem web.config oder App.Config, wenn Sie Tags haben, die in Ihrem Projekt nicht verwendet werden, oder wenn Sie keine Referenzen haben.

0
Oswaldo Alvarez

Dieser seltsame Fehler tritt auf, wenn Sie mit verschiedenen Versionen von EntityFramework-Versionen in Nuget-Paketen herumspielen, wie ich es tat.

Deinstallieren Sie zunächst Ihr Entity Framework DLL aus den NuGet-Paketen und bereinigen Sie dann die app.config. Durch Entfernen des Eintrags aus configSections und Entity Framework Element. 

Installieren Sie anschließend die gewünschte Version. Dies sollte das Problem beheben.

0
Bharat Raj

Wenn Sie ASP.NET und IISExpress verwenden, gehen Sie zu "C:\Benutzer \\ Dokumente\IISExpress\config\applicationhost.config", suchen Sie nach Ihrem Projekt und suchen Sie nach einem fehlerhaften Eintrag in virtualDirectory. 

0
malt