| 

.NET C# Java Javascript Exception

4
Hallo Zusammen,

ich hab Momentan das Problem das beim Starten einer Anwendung auf 2 Rechnern immer folgende Fehlermeldung kommt.
Der Abschnitt DbProviderFactories darf in jeder Konfigurationsdatei nur einmal vorkommen.
Der Fehler wird hier beschrieben: http://stackoverflow.com/questions/13822312/the-dbproviderfactories-section-can-only-appear-once-per-config-file
Der Fehler kommt wohl normalerweise daher, dass in der machine.config sowas in der Art steht:
<system.data>
<DbProviderFactories>
<add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
</DbProviderFactories>
<DbProviderFactories/>
</system.data>

Jetzt hab ich die machine.config (unter v4.0.30319 64 und 32 bit) gecheckt und dort ist der Eintrag DbProviderFactories nicht doppelt vorhanden.

Gibt es neben der machine.config und der Application.config noch andere Config-Dateien die lokal auf dem Rechner eingelesen werden?

Bei Stackoverflow wird weiter beschrieben wie man eine Section aus der machine.config in der lokalen Config überschreiben bzw. löschen kann. Ich hab den Fehler jetzt mal bei mir nachgestellt und versucht die betroffene Section zu löschen. So in etwa:
<system.data>
<clear/>
</system.data>

und so
<system.data>
<DbProviderFactories>
<clear/>
</DbProviderFactories>
</system.data>

und so
<configSections>
<remove name="system.data"></remove>
</configSections>

Alles ohne Erfolg.
Bin für jede Hilfe dankbar.

Auch ja es handelt sich um eine Desktopanwendung die für NET 4.0 (x86) kompiliert wurde. Die Anwendung liegt auf einem Netzlaufwerk und funktioniert auf allen Rechnern bis auf diesen 2 (wurden neu installiert). Generell laufen auf den 2 Rechnern .NET Anwendungen.

Nachtrag:
Die Fehlermeldung wird von der Microsoft.Practices.EnterpriseLibrary.Data.dll erzeugt die in meinem Anwendungspfad liegt. In meinem Projekt wird diese DLL jedoch nicht verwendet (kommt über Merge-Module) von daher kann ich die DLL einfach löschen und die Anwendung funktioniert.

Allerdings verstehe ich zum einen überhaupt nicht wie die Fehlermeldung auf den betroffenen Rechner zustande kommt (alle machine.config gecheckt) und zum anderen nicht wie ich die doppelten Einträge (wo auch immer sie her kommen) in meiner App.config überschreiben oder löschen kann.
News:
15.04.2014
PinBack 687 1 8
PinBack 687 1 8
1 Antwort
2
Hallo,

aber in Deinem Beispiel ist es eben doch doppelt drin!
<system.data>
<DbProviderFactories>
<add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
</DbProviderFactories>
<DbProviderFactories/>
</system.data>


Wenn Du die fünfte Zeile
<DbProviderFactories/>
löschst, dürfte die Meldung verschwunden sein.

Nachtrag:
Ok, dann probiere mal folgendes aus:
Erweitere Deine App.config wie folgt:

<system.data> 
<DbProviderFactories>
<remove invariant="System.Data.SqlServerCe.4.0"></remove>
<add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
</DbProviderFactories>
</system.data>


Mit <remove.... kannst Du einen eventuell bestehenden Eintrag entfernen und fügst dann Deinen eigenen ein.

Wenn dies auch nichts hilft, kontrolliere auch noch die machine.config des Framework 2.0. Wenn Du nämlich noch Assemblies im Projekt hast, die 2.0 benutzen, kann es sein, dass diese auch noch eingelesen wird!
15.04.2014
JEwen 2,7k 5
Ich wollte nur zeigen wie der Fehler "normalerweise" entsteht. In der Config der Rechner ist der Eintrag nicht doppelt vorhanden.
PinBack 15.04.2014
Siehe meinen Nachtrag
JEwen 15.04.2014
Also ich hab mir alle machine.config Datei schicken lassen. Nirgends war der Eintrag doppelt vorhanden. Kann man das Framework so konfigurieren, dass die machine.config von einem anderen Ort geladen wird?
Mit <remove> in der app.config hab ich auch schon einiges ausprobiert nachdem ich denn Fehler bei mir provoziert habe. Alles leider ohne Erfolg.
PinBack 15.04.2014
Na, dann weiß ich auch nicht weiter. Es gibt nirgendwo einen Hinweis, dass es noch einen anderen Grund gibt, als EBEN diese doppelte Eintragungen. Ich hoffe Du lässt uns an der Lösung teilhaben, wenn Du sie findest!
JEwen 17.04.2014

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH