Impossible de trouver le fournisseur de données .Net Framework demandé. il pourrait ne pas être installé

Bonjour, c’est la première fois que je publie un projet développé avec un framework d’entités sur un serveur distant. Les pages fonctionnent bien, mais lorsque j’essaie d’accéder à ma zone réservée, alors, en lisant une firebase database, j’obtiens cette erreur.

Impossible de trouver le fournisseur de données .Net Framework demandé. Il pourrait ne pas être installé.

Description : une exception non gérée s’est produite lors de l’exécution de la demande Web en cours. Consultez la trace de la stack pour plus d’informations sur l’erreur et son origine dans le code.

Détails des exceptions : System.ArgumentException: impossible de trouver le fournisseur de données .Net Framework demandé. Il pourrait ne pas être installé.

Erreur de source:

Une exception non gérée a été générée lors de l’exécution de la requête Web en cours. Les informations concernant l’origine et l’emplacement de l’exception peuvent être identifiées à l’aide de la trace de stack d’exceptions ci-dessous.

Trace de la stack:

[ArgumentException: impossible de trouver le fournisseur de données .Net Framework demandé. Il pourrait ne pas être installé.]
System.Data.Common.DbProviderFactories.GetFactory (Ssortingng providerInvariantName) +1402071
System.Data.EntityClient.EntityConnection.GetFactory (Ssortingng providerSsortingng) +35

[ArgumentException: le fournisseur de magasin spécifié est introuvable ou incorrect.]
System.Data.EntityClient.EntityConnection.GetFactory (Ssortingng providerSsortingng) +62
System.Data.EntityClient.EntityConnection.ChangeConnectionSsortingng (Ssortingng newConnectionSsortingng) +263
System.Data.EntityClient.EntityConnection..ctor (Ssortingng connectionSsortingng) +81
System.Data.Objects.ObjectContext.CreateEntityConnection (Ssortingng connectionSsortingng) +42
System.Data.Objects.ObjectContext..ctor (Ssortingng connectionSsortingng, Ssortingng defaultContainerName) +16
shield_trust.db_shieldtrustEntities..ctor () dans D: \ trust-company \ shield_trust \ shield_trust \ POCO.Context.cs: 23
shield_trust.user_login.check_login () dans D: \ trust-company \ shield_trust \ shield_trust \ user_login.aspx.cs: 65
shield_trust.user_login.entraButton_Click (Expéditeur d’object, EventArgs e) dans D: \ trust-company \ shield_trust \ shield_trust \ user_login.aspx.cs: 25
System.Web.UI.WebControls.Button.OnClick (EventArgs e) +118
System.Web.UI.WebControls.Button.RaisePostBackEvent (Ssortingng eventArgument) +112
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent (Ssortingng eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent (IPostBackEventHandler sourceControl, Ssortingng eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent (NameValueCollection postData) +36 System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563

Je dois copier des dll dans mon dossier bin ou modifier mon web.config?

Essayez d’exécuter ceci pour obtenir une liste des fournisseurs installés et vérifiez que le vôtre est là:

// This example assumes a reference to System.Data.Common. static DataTable GetProviderFactoryClasses() { // Resortingeve the installed providers and factories. DataTable table = DbProviderFactories.GetFactoryClasses(); // Display each row and column value. foreach (DataRow row in table.Rows) { foreach (DataColumn column in table.Columns) { Console.WriteLine(row[column]); } } return table; } 

MISE À JOUR: Le fournisseur MySQL doit être installé sur la machine cible. Il s’appelle “MySQL Connector Net xxx” et peut être obtenu à partir de ce site Web.

Avec nos applications (ASP.NET, Test, Service Windows), nous avons dû append les éléments ci-dessous à nos fichiers app.config ou web.config (à l’intérieur du nœud de configuration ) pour que cela fonctionne:

       

Pour nous, c’était un processus 32 vs 64 bits. Le serveur est en 64 bits. Le ODP.NET (client Oracle) installé est également en 64 bits. Notre application compilée avec la plate-forme cible “Any CPU” et “Prefer 32-bit”, drapeau SET:

http://grab.by/v5ki

fonctionnait en tant que processus 32 bits. Une fois recompilé avec le drapeau non coché, tout a commencé à fonctionner.

Si vous recevez un dialog comme suit …

“Impossible de trouver le fournisseur de données .NET Framework demandé. Il n’est peut-être pas installé”

Recherchez dans les fichiers machine.config aux emplacements suivants…

 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config 

Supprimer tout vide

 "DbProviderFactories" nodes. 

Lors de la connexion à une firebase database, un “fournisseur de données” est utilisé pour l’abstraction des implémentations.

Votre exception semble indiquer que le fournisseur de données indiqué n’est pas présent sur la machine cible. Quelle firebase database utilisez-vous dans votre environnement déployé? Vérifiez votre chaîne de connexion web.config pour plus de détails.

Vous devrez peut-être installer vous-même le fournisseur de données indiqué sur cette machine (une fois) afin qu’il soit disponible à partir du Global Assembly Cache (GAC).

Embarrassant, j’ai passé trois jours à essayer de résoudre cette erreur. J’avais une propriété “nomFournisseur” incorrecte sur mon “chaîne de connexion”

Changé de:

      

à:

      

J’avais spécifié System.Data.MySqlClient au lieu de Mysql.Data.MySqlClient

Oh!

Je sais que cela est ancien, mais comme expliqué par udog, cette section du message d’erreur “Le fournisseur de magasin spécifié est introuvable dans la configuration ou n’est pas valide” indique le problème. Donc, en fonction de la firebase database principale, ajoutez les informations sur le fournisseur au fichier de configuration. Si déjà ajouté, assurez-vous qu’il est correct. Pour oracle, si vous utilisez le fournisseur géré pour EF et oracle.DataAccess, cela ressemblera à ceci. Notez que la version de votre dll oracle peut être différente.

        

Pour approfondir la réponse de udog, si vous avez plusieurs applications sur le serveur utilisant ce fournisseur de données, il est probablement plus logique de l’append au fichier machine.config.

Comme le note Thomas, les fichiers machine.config se trouvent ici:

C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config

L’entrée machine.config ressemble à l’entrée web.config:

      

Remarque: Si votre application est sur plusieurs serveurs (par exemple, un serveur de test / d’assurance qualité et un serveur de production) et que vous n’obtenez cette erreur que sur l’un d’entre eux, je vous recommande de créer un fichier dif entre les fichiers machine.config pour voir s’il existe est une différence entre les serveurs.