L'initialiseur de type pour 'Système.Les données.De l'entité.Interne.AppConfig' a déclenché une exception sur un Sous-Site web
J'ai 2 sites, l'un est un sous-répertoire d'un autre, mais est une Application
ex: /root & /root/Services
Ils utilisent tous les deux Entity Framework 6.x, mais le site web enfant est en train de jeter L'initialiseur de type pour le Système.Les données.De l'entité.Interne.AppConfig' a déclenché une exception, car il semble être de voir à plusieurs entrées pour le même EF Fournisseur de Base de données en raison de la web imbriqué.config
Est-il un moyen pour effacer les prestataires de collecte, de sorte que je n'ai pas cette erreur? J'ai essayé de les mettre dans ce qui n'a eu aucun effet.
Si j'en commentaire fournisseurs de la section, il fonctionne
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
Mais je ne veux pas le faire parce que pas chaque environnement va avoir imbriqués les sites web. et NuGet tend remet en.
Puis-je régler ce par programmation?
Voici la pleine exception et la trace de la pile
System.TypeInitializationException was unhandled by user code
HResult=-2146233036
Message=**The type initializer for 'System.Data.Entity.Internal.AppConfig' threw an exception.**
Source=EntityFramework
TypeName=System.Data.Entity.Internal.AppConfig
StackTrace:
at System.Data.Entity.Internal.AppConfig.get_DefaultInstance()
at System.Data.Entity.Internal.LazyInternalConnection..ctor(String nameOrConnectionString)
at System.Data.Entity.DbContext..ctor(String nameOrConnectionString)
at co.Repository.Data.coContext..ctor() in coModel.Context.Generated.cs:line 23
at co.Repository.RepositoryBase`1.SingleOrDefault(Expression`1 predicate) in co.Repository\RepositoryBase.cs:line 13
at UserFactory.GetOneByUserName(String siteCode, String userName) in UserFactory.cs:line 151
at UserService.GetOneByUserName(String siteCode, String userName) in UserService.cs:line 59
at SyncInvokeGetOneByUserName(Object , Object[] , Object[] )
at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
InnerException: System.Configuration.ConfigurationErrorsException
HResult=-2146232062
Message=An error occurred creating the configuration section handler for entityFramework: **The provider for invariant name 'System.Data.SqlClient' is specified multiple times in the application configuration. The invariant name must be unique for each configured provider.** (web.config line 339)
Source=System.Configuration
BareMessage=An error occurred creating the configuration section handler for entityFramework: The provider for invariant name 'System.Data.SqlClient' is specified multiple times in the application configuration. The invariant name must be unique for each configured provider.
Filename=web.config
Line=339
StackTrace:
at System.Configuration.BaseConfigurationRecord.EvaluateOne(String[] keys, SectionInput input, Boolean isTrusted, FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult)
at System.Configuration.BaseConfigurationRecord.Evaluate(FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult, Boolean getLkg, Boolean getRuntimeObject, Object& result, Object& resultRuntimeObject)
at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
at System.Configuration.BaseConfigurationRecord.GetSection(String configKey)
at System.Configuration.ConfigurationManager.GetSection(String sectionName)
at System.Data.Entity.Internal.AppConfig..ctor()
at System.Data.Entity.Internal.AppConfig..cctor()
InnerException: System.InvalidOperationException
HResult=-2146233079
Message=The provider for invariant name 'System.Data.SqlClient' is specified multiple times in the application configuration. The invariant name must be unique for each configured provider.
Source=EntityFramework
StackTrace:
at System.Data.Entity.Internal.ConfigFile.ProviderCollection.BaseAdd(ConfigurationElement element)
at System.Configuration.ConfigurationElementCollection.OnDeserializeUnrecognizedElement(String elementName, XmlReader reader)
at System.Configuration.ConfigurationElement.DeserializeElement(XmlReader reader, Boolean serializeCollectionKey)
at System.Configuration.ConfigurationElement.DeserializeElement(XmlReader reader, Boolean serializeCollectionKey)
at System.Configuration.RuntimeConfigurationRecord.RuntimeConfigurationFactory.CreateSectionImpl(RuntimeConfigurationRecord configRecord, FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentConfig, ConfigXmlReader reader)
at System.Configuration.RuntimeConfigurationRecord.RuntimeConfigurationFactory.CreateSectionWithRestrictedPermissions(RuntimeConfigurationRecord configRecord, FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentConfig, ConfigXmlReader reader)
at System.Configuration.RuntimeConfigurationRecord.CreateSection(Boolean inputIsTrusted, FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentConfig, ConfigXmlReader reader)
at System.Configuration.BaseConfigurationRecord.CallCreateSection(Boolean inputIsTrusted, FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentConfig, ConfigXmlReader reader, String filename, Int32 line)
InnerException:
OriginalL'auteur Brian | 2013-11-05
Vous devez vous connecter pour publier un commentaire.
Dans EF6 vous pouvez utiliser une Base de Code de configuration de prendre un coup d'oeil à cette article pour plus de détails.
MODIFIER
J'ai vérifié dans un changement à EF6 code exact où les doublons sont ignorés. Cela devrait résoudre votre problème. Notez que cela ne rentre pas dans la version 6.0.2 et devrait être inclus dans la prochaine version après la 6.0.2.
Je ne pense pas que vous pouvez faire quelque chose pour le fichier de configuration lui-même - il n'y a pas de "ajouter/supprimer" logique (par exemple, comme celui de la connectionStrings ont). Toutefois, vous pouvez configurer par programmation à l'aide de cette Base de Code de configuration. De toute façon, vous pouvez poster les détails de l'exception (trace de la pile, plein de message et intérieure exceptions, le cas échéant)? J'aimerais voir où il en est exactement de jeter de - peut-être que c'est une question de suppression de doublons dans EF code?
J'ai ajouté la trace de la pile
Merci. De ce que je peux voir que le chèque est intentionnelle. Je pense que ce que vous pourriez faire est de spécifier un paramètre dans la section appSettings dans la config et ensuite vérifier au moment de l'exécution (par exemple, dans le DbConfiguration classe dérivée ctor ou dans le
DbConfiguration.Loaded
cas) si elle est définie et l'utiliser. Je sais que ce n'est qu'un travail autour mais j'espère qu'il va travailler pour vous. N'hésitez pas à ouvrir un bug sur cette sur la entityframework.codeplex.com/WorkItem/Create à reconsidérer la conception actuelle.Selon le rapport de bug sur le site codeplex Cela devrait être résolu dans 6.1.0
OriginalL'auteur Pawel
J'ai eu le même problème.
J'ai résolu cette erreur par simple mise à jour le numéro de version à partir de:
:
Exemple:
OriginalL'auteur Scott Nimrod
J'ai eu un problème avec EF 4.3.1 avec un imbriquée site.
Les deux sites ont été à l'aide de la même bibliothèque, et les chaînes de connexion...l'erreur a été causée par l'apparente des doublons dans la
C'était sans doute le chargement de la connexion des chaînes à partir du site parent, et ensuite ne pas charger le sous-site de chaînes.
Dans votre sous-site, ajouter:
De ce fait le travail pour moi
passé environ deux semaines à comprendre ce qui se passe sur la prod, je peux reposer en paix maintenant!
vous êtes excellent. J'ai perdu 6 heures et finalement cela a fonctionné...sur parent -- enfant app sage
oui, cela fonctionne pour le parent et l'enfant de l'installation iis.
OriginalL'auteur Andrew Arace