web-dev-qa-db-fra.com

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 base de données, 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 requête Web en cours. Consultez la trace de la pile pour plus d’informations sur l’erreur et son origine dans le code. 

Détails de l'exception : 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 pile d'exceptions ci-dessous.

Trace de la pile: 

[ArgumentException: impossible de trouver les données .Net Framework demandées Fournisseur. Il pourrait ne pas être installé.]
System.Data.Common.DbProviderFactories.GetFactory (String ProviderInvariantName) +1402071
System.Data.EntityClient.EntityConnection.GetFactory (String ProviderString) +35

[ArgumentException: le fournisseur de magasin spécifié est introuvable dans la configuration, ou n'est pas valide.]
System.Data.EntityClient.EntityConnection.GetFactory (String ProviderString) +62
System.Data.EntityClient.EntityConnection.ChangeConnectionString (String NewConnectionString) +263
System.Data.EntityClient.EntityConnection..ctor (String ConnectionString) +81
System.Data.Objects.ObjectContext.CreateEntityConnection (String ConnectionString) +42
System.Data.Objects.ObjectContext..ctor (String connectionString, String 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'objet, 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 (String EventArgument) +112
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent (String EventArgument) +10
System.Web.UI.Page.RaisePostBackEvent (IPostBackEventHandler SourceControl, String 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?

13
P_R

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()
{
    // Retrieve 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 x.x.x" et vous pouvez l'obtenir depuis ce site Web

14
Paul Zahra

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

<system.data>
        <DbProviderFactories>
            <remove invariant="MySql.Data.MySqlClient" />
            <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
        </DbProviderFactories>
    </system.data>
9
udog

Pour nous, il s’agissait d’un processus 32 vs. 64 bits . Le serveur est en 64 bits . L’ODP.NET (client Oracle) installé est également en 64 bits . Drapeau "et" Préférer 32 bits "SET:

http://grab.by/v5ki

fonctionnait en tant que processus 32 bits . Une fois recompilé avec l'indicateur non vérifié, tout a commencé à fonctionner.

4
Greg Z.

Si vous recevez un dialogue 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.
3
Thomas

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:

<configuration>
    <connectionStrings>
        <add name="Old" connectionString="Server=servername;Database=databasename;Uid=userid;Pwd=password;" providerName="System.Data.MySqlClient" />
    </connectionStrings>
</configuration>

à:

<configuration>
    <connectionStrings>
        <add name="Old" connectionString="Server=servername;Database=databasename;Uid=userid;Pwd=password;" providerName="MySql.Data.MySqlClient" />
    </connectionStrings>
</configuration>

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

oh!

2
birwin

Lors de la connexion à une base de données, 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 base de données 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).

1
Mark van Straten

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’ajouter 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:

<system.data>
    <DbProviderFactories>
        <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
</system.data>

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.

0
Tony L.

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 base de données 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 votre version de la DLL Oracle peut être différente. 

<system.data>
   <DbProviderFactories>
       <remove invariant="Oracle.MaanagedDataAccess.Client"/>
       <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>  
   <add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
   </DbProviderFactories>
</system.data>
0
BunmiO

J'ai rencontré la même erreur alors que j'essayais d'installer des outils autonomes sur mon PC personnel. J'ai effectué les étapes suivantes .NET Framework 2.0 et 3.0). Les services avancés de .NET Framework 4.7 ont été réinstallés mais ne résolvent pas le problème, avant que je n'utilise enfin cette procédure de correction simple . Téléchargez et installez SSCERuntime_x64-ENU.exe Suivez ce lien pour télécharger https://www.Microsoft.com/en-us/download/details.aspx?id=30709 Bonne chance.

0
Peters