none
Stockage des chaînes de connexion RRS feed

  • Question

  • Bonjour tout le monde,

    Pendant la création d'une DataSource, juste après la sélection de la base de données, on est invité à enregistrer la chaîne de connexion en lui donnant un nom, pour la réutiliser dans une autre DataSource du projet.

    J'aimerais savoir où cela est stocké, et comment on le déploie sur le serveur.

    En effet, j'ai pris l'habitude de mettre là le même nom qu'une chaîne de connexion telle que définie dans le web.config, et il s'avère que ça n'a rien à voir. Si j'ai deux chaînes de connexion dans le web.config, que j'ai enregistré la chaîne de connexion d'un DataSource avec le nom de l'une, et qu'en mode source je remplace par le nom de l'autre, je me retrouve à l'ouverture de la page avec une erreur 302, même à supposer que les deux chaînes de connexion du web.config représentent la même chaîne.

    Et sur le serveur, c'est erreur 302 avec l'une comme avec l'autre, tandis que la connexion par code en définissant une SqlConnexion puis une SqlCommand fonctionne.

    Dans le site que je suis en train de développer les données sont stockées sur base MySql, mais je doute que ça change grand-chose.

    Dit autrement, si en mode source dans une page asp.net j'ai :

        <asp:SqlDataSource ID="SqlDataSource1" runat="server"
            ConnectionString="<%$ ConnectionStrings:VentesConnectionString %>"
            ProviderName="<%$ ConnectionStrings:VentesConnectionString.ProviderName %>"

    il ne suffit pas d'avoir dans le web.config :
        <connectionStrings>
        <add name="VentesConnectionString"
          connectionString="server=beautifulserver;user id=niceguy;Password=verysecret;database=Ventes;port=3306"
          providerName="MySql.Data.MySqlClient"/>
      </connectionStrings>

    Bon, alors ... ça crèche où ?
    mercredi 17 juillet 2013 17:18

Réponses

Toutes les réponses

  • Bonjour

    Normalement ça doit fonctionner.

    L’erreur 302 c'est liée au transfer vers une autre ressource qui n'existe pas.

    Dans votre cas vous utilisez des CustomErrors?

    Veuillez regarder s'ils sont OFF dans le Web.Config

    Cordialement

     


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    jeudi 18 juillet 2013 14:01
  • Pourtant, l'utilisateur reçoit encore la page d'erreur.

    Alors voilà l'historique du déploiement :
    - j'ai commencé par planter tout le site, les pages html étaient affichées normalement, mais les pages aspx renvoyaient à la page d'erreur. J'ai fait un peu vite ici avec les codes de retour, 302 c'était sur la page html de renvoi, la page concernée renvoyait, si je me rappelle bien, 304 (d'ailleurs derrière il y a d'autres nombres qui apparaissent dans le log, ça je ne sais pas ce que ça signifie).
    - il s'est avéré que c'était mysql.data qui était mal déployé. Sur ma machine, cette référence est reconnue au niveau machine, donc son insertion dans le projet ne provoque pas l'ajout d'un répertoire bin, mais chez l'hébergeur ce n'est pas le cas donc il faut mettre mysql.data.dll dans le répertoire bin
    - une fois que ceci était corrigé, il y avait encore un souci avec la chaîne de connexion, à cause d'un caractère interdit dans le mot de passe.
    - Une fois ceci corrigé, Membership fonctionnait, ce qui signifie qu'on pouvait accéder à la base via les objets MySqlConnection et MySqlCommand (et parfois MySqlReader)
    - en revanche les objets DataSource, qui sont normalement censés accéder par la même chaîne de connexion, du moins une copie, provoquent toujours la même erreur.

    Dans WebConfig, j'ai déclaré deux fois la même chaîne de connexion sous deux noms différents, pour le cas où ensuite je serais amené à séparer les traitements comme on le fait avec Sql Server, qui a une base dédiée pour les services comme Membership.

    J'ai créé une page de test avec juste une DataSource et une GridView, pas de problème sur ma machine, mais chez l'hébergeur même problème. Ensuite, en mode source, j'ai mis <%$ ConnectionStrings:ApplicationServices %> à la place de <%$ ConnectionStrings:VentesConnectionString %> (ce sont les noms des deux chaînes de connexion dans le Web.config), et j'avais la même erreur que sur le site. Il est vrai que dans la boîte de dialogue de paramétrage de la DataSource, en plus des sources de données présentes dans l'explorateur de serveurs, il y a bien VentesConnectionString, mais pas ApplicationServices. D'où ma question en tête de fil.

    Mais de même que j'ai oublié de déployer MySql.Data, se pourrait-il que j'aie fait de même avec une autre référence ?

    J'ai mis dans le message suivant ce qui est déclaré dans le Web.config (tiens, windows.forms ... me rappelle pas).

    Je viens de déployer toutes les dll des références déclarées, d'arrêter et de redémarrer le serveur, et j'ai toujours une erreur sur la page où j'ai mis juste une DataSource et une GridView.
    Au fait, quand on déploie une référence, c'est juste la dll, pas le xml qui va avec ?

    L'hébergeur m'envoie ceci :

    Server Error in '/' Application.

    Unable to find the requested .Net Framework Data Provider.  It may not be installed.

    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.  Exception Details: System.ArgumentException: Unable to find the requested .Net Framework Data Provider.  It may not be installed. Source Error: 

    An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

    Stack Trace: 

     

    [ArgumentException: Unable to find the requested .Net Framework Data Provider.  It may not be installed.]

       System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) +1310319

       System.Web.UI.WebControls.SqlDataSource.GetDbProviderFactory() +67

       System.Web.UI.WebControls.SqlDataSource.GetDbProviderFactorySecure() +22

       System.Web.UI.WebControls.SqlDataSource.CreateConnection(String connectionString) +11

       System.Web.UI.WebControls.SqlDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments) +89

       System.Web.UI.WebControls.ListControl.OnDataBinding(EventArgs e) +95

       System.Web.UI.WebControls.ListControl.PerformSelect() +34

       System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +73

       System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +82

       System.Web.UI.WebControls.BaseDataBoundControl.OnPreRender(EventArgs e) +22

       System.Web.UI.WebControls.ListControl.OnPreRender(EventArgs e) +18

       System.Web.UI.Control.PreRenderRecursiveInternal() +80

       System.Web.UI.Control.PreRenderRecursiveInternal() +171

       System.Web.UI.Control.PreRenderRecursiveInternal() +171

       System.Web.UI.Control.PreRenderRecursiveInternal() +171

       System.Web.UI.Control.PreRenderRecursiveInternal() +171

       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +842

     



    • Modifié Gloops jeudi 18 juillet 2013 16:58 page au lieu de fenêtre d'erreur
    jeudi 18 juillet 2013 15:03
  • Un petit bout du Web.config :

                <assemblies>
                    <add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                    <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                    <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                    <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                    <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
                    <add assembly="MySql.Data, Version=5.2.7.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/>
                </assemblies>

    jeudi 18 juillet 2013 15:09
  • Bonjour

    Veuillez verifier dans les fichiers machine.config (il y a plusieurs ).

    Vous pouvez les treuver dans le chemin \Windows\Microsoft.net\Framework\vXXXX\Config\

    Verifiez s'il n'y a pas une balise <DbProviderFactories/> vide et enlevez-le.

    Cordialement,


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    vendredi 19 juillet 2013 06:37
  • Bonjour,

    Je ne saurais dire comment je n'ai pas eu plus tôt l'idée de demander à l'hébergeur si il avait installé MySql Connector Net.

    C'est ceci qui m'a aidé à faire le rapprochement avec le nom DbProviderFactories qui apparaît dans la pile d'erreur :

    http://stackoverflow.com/questions/1216626/how-to-use-ado-net-dbproviderfactory-with-mysql

    J'attends la réponse, mais c'est vrai que c'était un point fondamental.

    A propos, pour ce qui est de l'erreur qui est apparue chez moi. En retirant les pages d'erreur dans le Web.config j'ai pu en savoir plus : c'est le mot-clé port, dans la chaîne de connexion, qui ne passait pas. Une fois que j'ai mis 127.0.0.1:3307 ça allait mieux. ça reste étrange, tant que j'ai laissé comme j'avais saisi dans la boîte de dialogue ça fonctionnait, pourtant dans le Web.config ça apparaissait avec le mot-clé port. Il doit y avoir un tampon quelque part ?


    • Modifié Gloops vendredi 19 juillet 2013 08:22 dernier paragraphe (erreur chez moi)
    vendredi 19 juillet 2013 07:36
  • Bonjour

    Veuillez verifier dans les fichiers machine.config (il y a plusieurs ).

    Vous pouvez les treuver dans le chemin \Windows\Microsoft.net\Framework\vXXXX\Config\

    Verifiez s'il n'y a pas une balise <DbProviderFactories/> vide et enlevez-le.


    Si ça ne va pas mieux après avoir vérifié MySql Connector Net, je leur soufflerai ça.

    vendredi 19 juillet 2013 07:46
  •  

    Je devine maintenant sur le problème avec le mot "PORT".

    Une chaine de connexion MySQL peut contenir le mot PORT. Mais ce système ne "comprends" pas le string de connexion MySQL (Evidement un problème avec le pilote, -n'est pas installée ou un autre souci). Donc il essaye de l’utiliser comme string de connexion pour un pilote default - MS SQL qui n’accepte pas PORT. On peut tester ça, après la correction du pilote, utiliser de nouveau le mot PORT.

    Cordialement,


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    vendredi 19 juillet 2013 13:34
  •  

    Je devine maintenant sur le problème avec le mot "PORT".

    Une chaine de connexion MySQL peut contenir le mot PORT. Mais ce système ne "comprends" pas le string de connexion MySQL (Evidement un problème avec le pilote, -n'est pas installée ou un autre souci). Donc il essaye de l’utiliser comme string de connexion pour un pilote default - MS SQL qui n’accepte pas PORT. On peut tester ça, après la correction du pilote, utiliser de nouveau le mot PORT.

    Euh ... En fait, c'est sur ma machine, que j'ai eu ce message d'erreur. J'ai mis du temps à avoir un Connector Net qui fonctionne mais là on dirait que ça y est. La boîte "à propos de Visual Studio" 2005 dit que j'ai le connecteur 5.2, et Ajout/Suppression de programmes précise 5.2.7 ce qui m'étonne moins, il me semblait bien qu'il y avait un 7 quelque part. Et c'est avec ça que je me suis fait jeter avec port dans la chaîne de connexion.

    Pour ce qui est de l'hébergeur, ils m'affirment ce midi que la version 5.1.1 du connector Net est installée, pourtant j'en suis au même point, toujours la même erreur.

    Je me demande bien pour quoi faire ils l'avaient installé, d'ailleurs, puisque j'ai dû déployer MySql.Data dans le répertoire bin. C'est possible d'installer le connecteur sans la logique de la base de données, mais je me demande jusqu'à quel point c'est cohérent, avancé-je avec un soupçon de mauvais esprit.

    Je vais  peut-être demander si ils ont un test de référence ? Mon code fonctionne sur ma machine, donc si il ne fonctionne pas sur le site ça peut être intéressant de savoir si un autre site fonctionne sur le même serveur avec les mêmes composants. J'ai pas mal ramé pour avoir une version compatible sur ma machine, donc il ne serait pas forcément plus étonnant que ça qu'on rame pour l'installation sur un serveur. D'où l'intérêt de savoir si ça a déjà été fait pour quelqu'un d'autre.

    Je vais leur parler de la balise DbProviderFactories vide dans le machine.config, aussi. De toute manière, maintenant, ça ne bougera pas avant Lundi (quand j'y pense, le lendemain ça fera une semaine que j'ai déployé, enfin essayé).

    vendredi 19 juillet 2013 18:22
  • Bonjour


    Essayez d’installer et compiler le projet avec la même version de MySqlConnector que votre hébergeur utilise et après le redéployer.

    Cordialement,


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    lundi 22 juillet 2013 09:24
  • Bonjour,

    Bon, je vais faire ça. ça pourrait être la dernière chance, vu que ce matin je n'ai aucune nouvelle, alors que je n'ai pas oublié de mettre l'emphase voulue hier soir dans mon mail au bout de bientôt une semaine de déploiement pour une page.

    Une fois que j'ai compilé avec un autre connector net, c'est la page et le Web.config, qu'il faut redéployer, c'est bien ça ?

    Ah j'ai déployé les DLL de toutes les références, donc il faut que je regarde si il y a un changement à ce niveau. En principe on ne déploie pas les XML qui sont fournis avec les DLL, si ? J'ai fait un copié collé, mais les XML doivent-ils être utilisés un peu comme les fichiers Inf sous Windows ?

    lundi 22 juillet 2013 09:35
  • Ah, oui, sauf que l'hébergeur a installé le 5.1.1, et Oracle propose le 5.0.9 et le 5.1.7, mais rien entre les deux. Bon, je vais essayer les deux.

    lundi 22 juillet 2013 09:40
  •  

    Je dirais que c'est mieux de redéployer tout le site - utilisez l'option de Visual Studio.

    Aussi peut-être poser une question sur le forum MySQL - c'est un problème qui regarde cette composante et là, le plus probable,  ils peuvent vous donner plus de détails sur les différences entre les versions.

    Cordialement,


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    lundi 22 juillet 2013 09:48
  • Ah mais ... le plus joli, c'est que maintenant, dans Ajout/Suppression de programmes, sur ma machine, j'ai dix entrées MySql, dont trois MySql Connector (J, C++, ODBC), mais pas de MySql Connector Net. D'ailleurs, j'ai essayé au début, d'utiliser ODBC, ça n'a pas été probant. Chez l'hébergeur la documentation en ligne suggérait de mettre ODBC dans la chaîne de connexion, quand j'ai essayé ça je me suis fait jeter là-dessus, au moins un point sur lequel les deux machines sont au diapason.

    Et pourtant sur ma machine l'affichage de données MySql sur une page Asp.Net fonctionne très bien.

    Il est vrai que Visual Studio 2005 reconnaît toujours :
    MySQL Connector/Net   5.2
    Data design and management tools for MySQL.  Copyright © 2007 MySQL AB

    En fait la dernière fois que j'avais regardé dans Ajout/Suppression de programmes c'était 5.2.7, mais l'essentiel était que ça marche.

    J'ai regardé dans MySql Installer, là on propose Connector / Net 6.6.5, et comme ce n'est pas celui-là qui est installé il n'est pas coché, donc pas proposé à la désinstallation.

    Alors ... Supprimer le répertoire du connecteur ?
    Pas très orthodoxe c't'affaire ...

    Longtemps j'ai eu des produits qui apparaissaient correctement installés et qui ne fonctionnaient pas, là on dirait que c'est le contraire.

    Au demeurant, si il s'agit de s'aligner sur la configuration de l'hébergeur, ils ont MySql 5.0, et moi 5.6.
    Je m'y suis repris à dix fois pour l'installer, il faut dire que j'ai dû réinstaller .Net et ensuite ça s'est mieux passé.

    Si je dois défaire ce qui marche j'espère ne pas ramer à nouveau autant.

    ça a quelque chose d'un peu frustrant de redéployer tout le site, vu le caractère passe-partout du code du composant de source de données :

                   <asp:SqlDataSource ID="dsCategories" runat="server" ConnectionString="<%$ ConnectionStrings:VentesConnectionString %>"
                        ProviderName="<%$ ConnectionStrings:VentesConnectionString.ProviderName %>" SelectCommand="SELECT ProductCategoryKey, ProductCategoryAlternateKey, FrenchProductCategoryName FROM dbo_dimproductcategory">
                    </asp:SqlDataSource>

    Le provider name, dans le Web.config, s'intitule ainsi :
          providerName="MySql.Data.MySqlClient"

    Mais au fait ... Est-ce qu'on n'est pas supposé avoir une référence MySql.Data.MySqlClient ?
    Je ne l'ai pas mise, au motif qu'elle n'est pas proposée dans la boîte de dialogue d'ajout de référence dans Visual Studio.
    Je mentionne ça à tout hasard, parce qu'à force de ne pas en parler ça finit par être gros que ça soit ça :)


    Bon, alors ... Désinstaller MySql 5.6 pour installer la 5 ? En espérant que ça se passe mieux qu'il y a quelques semaines car j'ai ramé ...

    Désinstaller le Connector Net ? Mais comment si je ne le retrouve pas dans Ajout/Suppression de programmes ?

    lundi 22 juillet 2013 11:06
  •   Aussi peut-être poser une question sur le forum MySQL - c'est un problème qui regarde cette composante et là, le plus probable,  ils peuvent vous donner plus de détails sur les différences entre les versions.

    Sur le forum MySQL j'ai posé une question au sujet de l'emplacement de stockage des chaînes de connexion, on m'a confirmé que c'était bien dans le Web.config, en fait à ce que j'ai vu depuis il faut juste tenir compte de peut-être un tampon quelque part.

    Il y a peut-être à creuser un peu ça par curiosité, mais là il va falloir que je formule différemment ma question de déploiement, et c'est vrai que c'est une question qui concerne MySql. C'est vrai que ce n'est pas parce que j'ai posé une question qui s'est avérée ne pas être la bonne que ça m'empêche d'en poser une autre ...

    lundi 22 juillet 2013 12:02
  • Mais au fait ... Est-ce qu'on n'est pas supposé avoir une référence MySql.Data.MySqlClient ?

    C'est vrai qu'il ne faut pas confondre avec SQL Server : dans le MySqlProfileProvider on trouve "using MySql.Data.MySqlClient", c'est donc qu'il en a trouvé une, à défaut peut-être que ce soit la bonne.

    Je me rends compte que MySql.Data réside, chez moi, dans le répertoire C:\Program Files\MySQL\MySQL Connector Net 5.2.7\Binaries\.NET 2.0

    Je l'avais forcément vu pour le copier, mais sans réaliser ...

    ça confirme l'intérêt effectivement d'utiliser le même connecteur, et par ailleurs ça me rend encore plus perplexe quant à la possibilité d'installer le connecteur mais imposer de déployer mysql.data.dll dans le répertoire bin.

    Bon, ce n'est pas le tout de le dire, il va falloir que je fasse un petit topo à l'usage d'un forum chez MySql.

    Je vais quand même tâcher de rester réactif pour ce changement de version chez moi ... Pas facile de désinstaller un programme (ou un pilote) qui a disparu de la liste "Ajout/Suppression de programmes".

    lundi 22 juillet 2013 12:45
  •  

    Pour désinstaller la version, essayez d’installer la même version. Si le logiciel d'installation le voit bien il va vous proposer de la désinstaller en avant.

    Cordialement,


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    lundi 22 juillet 2013 13:34
  • Bien vu, en partant du programme d'installation ça se passe bien.

    Alors cette fois ça y est j'ai installé MySql 5.0.23 avec MySql Connector Net 5.0.9, et j'obtiens bien la même erreur sur ma machine que sur le site.

    Je dois d'ailleurs préciser que la boîte de dialogue "A propos de Visual Studio" 2005 ne mentionne pas de Connector Net, alors que c'était le cas avec la version 5.2.7 (pas avec les versions Express 2010, mais ça c'est une autre question).

    Ce qui me permet donc de poser la question : "et maintenant, qu'est-ce qu'on fait ?"

    (question que j'ai posée aussi chez MySql)

    • Modifié Gloops lundi 22 juillet 2013 23:46 parenthèse à la fin
    lundi 22 juillet 2013 23:43
    • Modifié Aurel Bera mardi 23 juillet 2013 06:16 modif
    mardi 23 juillet 2013 06:15
  • Maintenant effacez les anciennes références vers fichiers MySQL.*.dll et les ajouter les DLL de la version 5.0.9.

    Ah ben oui forcément j'ai fait ça tout de suite, hein.

    D'ailleurs sinon le message d'erreur n'aurait pas été le même, j'aurais eu :

    Erreur    1    Impossible de charger le fichier ou l'assembly 'MySql.Data, Version=5.2.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' ou une de ses dépendances. Le fichier spécifié est introuvable.    Web.config    57    
    et ça empêche de compiler, ce qui explique que les pages aspx ne s'affichaient pas avant que je déploie la DLL.

    Une fois que j'ai corrigé la référence, la solution se compile, mais les pages aspx qui comportent un contrôle DataSource soulèvent l'exception :

    Le fournisseur de données .Net Framework demandé est introuvable. Il n'est peut-être pas installé.

    et la pile d'erreur comporte GetDbProviderFactory() comme déjà publié ci-dessus (à part que le serveur donne les messages en Anglais alors que mon Visual Studio est en version francophone).

    D'ailleurs j'ai commencé par un autre site qui a donné la même chose.

    mardi 23 juillet 2013 07:37
  • Avez-vous vérifiée dans le fichier de configuration machine.config  la cle <DbProviderFactories>?



    Il y a trois fichiers machine.config dans C:\Windows\Microsoft.Net\Framework, un par version.

    La version 1.0.3705 ne comporte pas de mention de DbProviderFactories.

    La version 2.0.50727 comporte ceci en plus d'une mention depuis System.Data dans config.sections :

      <system.data>
        <DbProviderFactories>
          <add name="Odbc Data Provider" invariant="System.Data.Odbc" description=".Net Framework Data Provider for Odbc" type="System.Data.Odbc.OdbcFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
          <add name="OleDb Data Provider" invariant="System.Data.OleDb" description=".Net Framework Data Provider for OleDb" type="System.Data.OleDb.OleDbFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
          <add name="OracleClient Data Provider" invariant="System.Data.OracleClient" description=".Net Framework Data Provider for Oracle" type="System.Data.OracleClient.OracleClientFactory, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
          <add name="SqlClient Data Provider" invariant="System.Data.SqlClient" description=".Net Framework Data Provider for SqlServer" type="System.Data.SqlClient.SqlClientFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        </DbProviderFactories>
      </system.data>
    

    Pour la version 4.0.30319, nous avons ceci, en plus de la même déclaration :

      <system.data>
        <DbProviderFactories>
          <add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
          <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>
    

    On ne parle effectivement pas de MySql. Mais il ne me semble pas qu'il y ait de balise vide.

    mardi 23 juillet 2013 09:07
  • Aucune ne contient aucun info pour MYSQL. Je dirais que le Connecteur n’est pas bien installé.

     

    Essayez de confirmer sur le forum MySQL, mais vous devez avoir dans DbProviderFactories une clé pour MySQL de type:

    <DbProviderFactories> <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" /> </DbProviderFactories>

     

    Cordialement,


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mardi 23 juillet 2013 09:17
  • Encore mieux:

    Ajoutez dans votre Web.Config

    <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" />
        </DbProviderFactories>
    </system.data>

    Comme ça, vous ne devez pas modifier machine.config (chez votre hébergeur sera difficile)

    Cordialement,


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mardi 23 juillet 2013 09:24
  • Encore mieux:

    Ajoutez dans votre Web.Config

    <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" />
        </DbProviderFactories>
    </system.data>

    Comme ça, vous ne devez pas modifier machine.config (chez votre hébergeur sera difficile)

    Je l'avais bien interprété comme ça.

    Alors le message a effectivement changé :

    Échec de la recherche ou du chargement du fournisseur de données .Net Framework inscrit.

    Donc on a pris acte qu'il y en a un.

    Chez MySql, j'ai posé ma question dans le newsgroup Install

    Je ne sais pas si c'est celui qui correspond le mieux au sujet, mais en tout cas aux dernières nouvelles il n'y a pas de réaction.

    • Modifié Gloops mardi 23 juillet 2013 09:33 newsgroup MySql
    mardi 23 juillet 2013 09:31
  • Encore un petit teste. Dans Web.Config  (effacer la ligne    <remove invariant="MySql.Data.MySqlClient" />
     )

    <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" />
        </DbProviderFactories>
    </system.data>


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mardi 23 juillet 2013 09:40
  • Encore un petit teste. Dans Web.Config  (effacer la ligne    <remove invariant="MySql.Data.MySqlClient" />
     )

    <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" />
        </DbProviderFactories>
    </system.data>

    En fait j'ai créé la section system.data spécialement pour y insérer la déclaration de DbProviderFactories, donc il n'y a pas de balise remove.

    Ou bien c'est à un autre niveau ?

    mardi 23 juillet 2013 09:51
  • Pour être plus complet voici ce que j'ai comme balises remove dans le Web.config :

            <httpHandlers>
                <remove verb="*" path="*.asmx"/>

            <modules>
                <remove name="ScriptModule"/>
            <handlers>
                <remove name="WebServiceHandlerFactory-Integrated"/>
                <remove name="ScriptHandlerFactory"/>
                <remove name="ScriptHandlerFactoryAppServices"/>
                <remove name="ScriptResource"/>

    mardi 23 juillet 2013 09:55
  • Ah ben non. J'ai créé la section system.data spécialement pour y insérer ce que vous m'avez dit, donc il n'y a rien d'autre :

      <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" />
        </DbProviderFactories>
      </system.data>
    

    mardi 23 juillet 2013 10:08
  • Je pense à une chose en regardant la section system.data du machine.config : pour me connecter à une base MySql j'ai utilisé un SqlDataSource, car c'était ce qui m'apparaissait le plus proche, en l'absence d'un MySqlDataSource.

    Peut-être ai-je eu tort ?

    mardi 23 juillet 2013 10:13
  • Veuillez faire deuc testes :

    Premier   (avec option remove)

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

    Deuxieme   (sansoption remove):

    <DbProviderFactories>
              <add name="MySQL Data Provider"
               invariant="MySql.Data.MySqlClient"
               description=".Net Framework Data Provider for MySQL"
               type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" />

    Comme ça, on peut avoir plus des info sur le souci.

    Merci


     

     

     


     


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mardi 23 juillet 2013 10:14
  • Alors le deuxième était donc déjà fait, j'ai ajouté la balise remove pour faire le premier, et le résultat est le même :

    Échec de la recherche ou du chargement du fournisseur de données .Net Framework inscrit.

    (aucune ligne source appropriée)

    Trace de la pile:

    [ConfigurationErrorsException: Échec de la recherche ou du chargement du fournisseur de données .Net Framework inscrit.] System.Data.Common.DbProviderFactories.GetFactory(DataRow providerRow) +1310551 System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) +114 System.Web.UI.WebControls.SqlDataSource.GetDbProviderFactory() +67 System.Web.UI.WebControls.SqlDataSource.GetDbProviderFactorySecure() +22 System.Web.UI.WebControls.SqlDataSource.CreateConnection(String connectionString) +11 System.Web.UI.WebControls.SqlDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments) +89 System.Web.UI.WebControls.ListControl.OnDataBinding(EventArgs e) +95 System.Web.UI.WebControls.ListControl.PerformSelect() +34 System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +73 System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +82 System.Web.UI.WebControls.BaseDataBoundControl.OnPreRender(EventArgs e) +22 System.Web.UI.WebControls.ListControl.OnPreRender(EventArgs e) +18

    (je n'ai pas tout mis, mais si je ne m'abuse il y a la même chose plus haut dans le fil)

    (Ah, on dirait que par défaut depuis Firefox on copie avec la mise en forme, et depuis Internet Explorer, sans)

    mardi 23 juillet 2013 10:28
  • Je soupçonne qu'on n'a pas envoyé les paramètres corrects pour MySQL Data Provider.

    Peut-être essayer une réinstallation du MySql Connectour ?

    C’est anormal qu’il n’existe pas dans les machine.config.

    Quelle version de système d’exploitation utilisez-vous ?


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    • Marqué comme réponse Gloops mardi 23 juillet 2013 19:40
    mardi 23 juillet 2013 12:39
  • J'ai Windows XP Home SP3, et si je me rappelle bien le serveur Windows 2003.

    Il arrive que certains produits sortent avec un programme d'installation pas tout-à-fait abouti, pour la même raison mon Visual Studio 2005 a été installé non pas avec SQL Express 2005 qui était fourni sur CD, mais SQL Express 2008 R2, parce que lui quand il lui manque quelque chose il dit quoi, et autant que possible à l'écran.

    J'ai essayé au moins quatre connecteurs .Net pour MySql, jusqu'à en trouver un qui marche, du coup ce n'était pas la même version que sur le serveur.

    Alors ensuite j'ai posé au support la question de comparer avec d'autres utilisateurs, mais je n'ose pas y aller trop fort, c'est quand même supposé être une offre pas chère qui n'inclut pas de support ...

    Je soupçonne bien que si j'arrivais à persuader le support d'installer LA version que j'avais fini par trouver efficace, il n'y aurait pas de raison que ça ne marche pas.

    Il est même possible de supposer que le connecteur 5.0.9, quand il est sorti, s'installait bien, mais s'y prenait d'une manière que depuis les mises à jour de sécurité de Windows ont interdit ? Et des versions ultérieures auraient été modifiées en conséquence ...

    Bien sûr, on n'en aurait eu le coeur net que si il y avait eu une réaction chez MySql, de la part de quelqu'un qui aurait eu cet historique en tête.

    Alors que là, nous en sommes réduits aux conjectures ...


    • Modifié Gloops mardi 23 juillet 2013 13:24 cohérence grammaticale
    mardi 23 juillet 2013 13:20
  • J'ai l'impression que j'ai une autre question qui se soulève, là-dessus.

    Histoire d'entrer par la fenêtre si la porte ne s'ouvre pas, je m'attaque à l'utilisation d'un ObjectDataSource, aussi je commence par créer un objet catégorie de produit.

    Au moment de demander l'encapsulation d'un champ, l'opération s'effectue, et puis à la fin, voilà un composant utilisateur que j'ai placé sur la page, qui revient sur le tapis. Il n'a posé aucun problème pendant les diverses compilations, s'est très bien affiché avec la version plus récente du connecteur, et là à la fin on me rappelle que le composant utilise System.Web.Extensions, qui d'ailleurs est déclaré dans le Web.config :

    J'imagine que je peux ignorer ça ?

    mardi 23 juillet 2013 14:34
  • Bon, dans les aspirateurs, on connaît le vendeur qui met le pied dans la porte pour qu'on ne le mette pas dehors.

    Dans l'hébergement web, on connaît maintenant le technicien qui dit nous avons une formule avec tout à jour mais forcément c'est plus cher, et qui laisse le client gamberger là-dessus à se dire mon Dieu mais ça doit être une énormité, pour finir par se rendre compte que la différence est somme toute symbolique. Ce n'est pas nécessairement une démarche revendiquée comme telle, mais il a fallu s'y prendre à trois fois pour avoir les infos.

    ça fait un drôle d'effet, mais comme en face on a affaire à des gens qui disent "nos conditions peuvent changer n'importe quand dans votre dos, il faut penser à venir voir tous les jours si des fois ça n'aurait pas changé" ...

    Alors jusqu'à plus ample informée, j'en reste avec mon idée qu'il existe des MySql Connector .Net qui fonctionnent, et d'autres qui ne fonctionnent pas.

    Le temps passé là-dessus a été très formateur, et merci beaucoup pour le soutien obtenu.

    Maintenant, je crois que le moment est venu de tirer les conclusions, et pour pouvoir afficher autre chose que du texte il faut changer de formule d'hébergement.

    mardi 23 juillet 2013 19:40
  • C'est vrai que ça fait un peu bizarre de marquer comme réponse une intervention qui dit que la situation est anormale, mais d'un autre côté faire passer une semaine là-dessus et marquer comme réponse ma conclusion, je trouvais que c'était un peu limite ...

    Au fait le message d'erreur à la fin de l'encapsulation m'intrigue, si je pouvais y voir un peu plus clair ...

    mardi 23 juillet 2013 19:43
  • Encore mieux:

    Ajoutez dans votre Web.Config

    <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" />
        </DbProviderFactories>
    </system.data>

    Comme ça, vous ne devez pas modifier machine.config (chez votre hébergeur sera difficile)


    Bonjour,

    Je suis en train de travailler sur la nouvelle formule d'hébergement, et ... cette section s'avère nécessaire dans le Web.config pour accéder à la base par un DataSource.

    Le progrès c'est que ça marche, en ce sens qu'on ne lève pas d'exception et on affiche des données, hélas les paramètres ne semblent pas passer d'une liste déroulante à l'autre. J'ai un peu cherché dans le code de la page, or ce n'est pas là que ça se trouve : avant d'intégrer la page à la maquette du site qui est en ligne, j'ai inséré le composant sur un site créé spécialement. J'ai copié le code de cette page, et ça n'a rien changé. Donc j'affiche des données, mais pas toutes celles prévues, puisque j'ai sélectionné une catégorie, qui n'est pas passée à la liste des sous-catégories, laquelle a fortiori ne peut pas déclencher de sélection de produits ensuite. Alors que sur le site créé spécialement, ça fonctionne bien. D'ailleurs, en revanche dans ce site je ne peux pas mettre la section ci-dessus, sinon on me dit échec à charger le fournisseur demandé.

    Est-ce que ça pourrait avoir un rapport avec la manière d'appeler le pilote ?

                            WHERE (dbo_dimproductsubcategory.ProductCategoryKey 
                                        = @ProductCategoryKey) 
                            AND (NOT (dbo_dimproduct.ProductKey IS NULL))
                            GROUP BY ProductSubCategoryKey">
                            <SelectParameters>
                                <asp:ControlParameter Name="ProductCategoryKey" 
                                    ControlID="dnlCategories" 
                                    PropertyName="SelectedValue" DefaultValue="1" />
                            </SelectParameters>
                    </asp:SqlDataSource>


    J'ai d'ailleurs eu une précision complémentaire par téléphone : la connexion est de type ODBC, au demeurant c'est totalement transparent au développement, puisqu'il n'en est fait mention nulle part, du moins à ce que j'aie vu.

    • Modifié Gloops jeudi 25 juillet 2013 09:08 précision ODBC
    jeudi 25 juillet 2013 08:57
  • Je suis en train de travailler sur la nouvelle formule d'hébergement, et ... cette section s'avère nécessaire dans le Web.config pour accéder à la base par un DataSource.

    Seulement si cette config ne se trouve dans machine.config.

    Je vous propose de essayer sur le site du votre hébergeur sans ça. Seulement s'il ne fonctionne pas vous devez l'ajouter.

    De l'autre cote, vérifies svp  si vous utilisez le bon nom de connexion/ nom de fournisseur BD.

    Cordialement,


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    jeudi 25 juillet 2013 09:14
  • Bon, alors je le refais :
    - sans la section System.Data, je peux lire des données sur MySql par code via les objets MySqlConnection et MySqlCommand, mais pas par SqlDataSource : toute tentative de charger une page qui comporte un SqlDataSource pointant sur MySql provoque une exception
    - avec la section System.Data, les lectures par code continuent de fonctionner, et en plus la page avec une SqlDataSource s'affiche. Toutefois il reste un "bémol" : les paramètres de type Control ne passent pas d'une DropdownList à une autre DataSource. Il semble que je vais devoir explorer les autres moyens de transférer un paramètre, dans un événement de la liste déroulante. Si il y avait moyen de plutôt faire refonctionner les paramètres de type ControlParameter, ça aurait le double avantage d'être plus élégant et de demander moins de programmation.
    jeudi 25 juillet 2013 17:27
  •  

    Veuillez regarder ce thread :

    http://forums.mysql.com/read.php?38,546265,564533#msg-564533

    Quel version de VS utilisez-vous?

    Mon opinion c'est que c'est mieux de ne pas utiliser des composantes avancées de type SqlDataSource , etc.

    Vous contrôlez mieux les versions de Connector avec moins d'implications au changement de version de Connecteur MySql.

    Cordialement,


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    vendredi 26 juillet 2013 08:14
  • J'utilise Visual Studio 2005 Professional  Edition.

    Sans la section System.Data, donc avec le Connector Net, ça fonctionne bien, les paramètres sont bien transmis. C'est sur le serveur que ça lève une exception, car en fait ils n'ont pas installé de Connector Net, et ne semblent pas disposés à le faire.

    Avec la section System.Data, le serveur s'avère capable d'afficher des données, Visual Studio aussi bien sûr, en revanche là les paramètres sont ignorés (sur les deux plateformes), je suis obligé de faire ça dans dnlCategories_SelectedIndexChanged, et de l'appeler depuis le Page_Load :

            dsSousCategories.SelectCommand = "SELECT dbo_dimproductsubcategory.ProductSubcategoryKey, dbo_dimproductsubcategory.FrenchProductSubcategoryName, dbo_dimproductsubcategory.EnglishProductSubcategoryName, dbo_dimproduct.ProductKey FROM dbo_dimproductsubcategory INNER JOIN dbo_dimproduct ON dbo_dimproductsubcategory.ProductSubcategoryKey = dbo_dimproduct.ProductSubcategoryKey WHERE (dbo_dimproductsubcategory.ProductCategoryKey  ="
    
                +   (String.IsNullOrEmpty(dnlCategories.SelectedValue) ? 
                    dsSousCategories.SelectParameters[0].DefaultValue : 
                    dnlCategories.SelectedValue.ToString()) +
     
                            ") AND (NOT (dbo_dimproduct.ProductKey IS NULL)) " +
                            "GROUP BY ProductSubCategoryKey";
    

    Alors ça marche, mais ça me donne un peu l'impression de trahir ASP.Net.


    vendredi 26 juillet 2013 08:25
  •   Mon opinion c'est que c'est mieux de ne pas utiliser des composantes avancées de type SqlDataSource , etc.

    Vous contrôlez mieux les versions de Connector avec moins d'implications au changement de version de Connecteur MySql.


    L'hébergeur a l'air de cet avis aussi d'après les exemples de code qu'ils proposent, mais je trouve que c'est quand même se priver d'un apport de productivité précieux.

    vendredi 26 juillet 2013 08:31
  • Toutefois il reste un "bémol" : les paramètres de type Control ne passent pas d'une DropdownList à une autre DataSource. Il semble que je vais devoir explorer les autres moyens de transférer un paramètre, dans un événement de la liste déroulante. Si il y avait moyen de plutôt faire refonctionner les paramètres de type ControlParameter, ça aurait le double avantage d'être plus élégant et de demander moins de programmation.

    ça y est, j'ai la réponse, et sa mise en œuvre tient en un caractère : sous SQL Server, chaque nom de caractère est précédé d'une arrobase, sous MySql il faut remplacer l'arrobase par un point d'interrogation.

    Et c'est tout.

    Dire que j'avais épluché en vain les deux premières pages de réponses de Bing.

    J'ai trouvé la réponse après avoir pris le temps d'écrire plus de six pages de code pour transférer le paramètre par la session, le restaurer au bon moment, changer la requête de chaque source de données ...

    Il ne me restait plus qu'un point à régler, il m'arrivait de chercher à initialiser une liste à une valeur qu'elle ne contenait pas, ce qui mettait bien entendu la page en erreur, alors il fallait que j'écrive une fonction pour vérifier sa présence dans les données de la liste. Je suis alors retourné dans le code du MembershipProvider pour me rappeler la syntaxe d'utilisation d'un MySqlCommand, et je suis tombé sur un cas où on passait des paramètres ...

    Il me restera un point à élucider : dans le premier site que j'ai créé avec une page qui contient mon contrôle, si je mets la section system.data j'ai une erreur de fournisseur non trouvé, alors que sur le site que je dois déployer c'est si je ne la mets pas que j'ai cette erreur. ça vaut mieux que l'inverse, puisque c'est le deuxième que je dois déployer, et que sur le serveur il faut cette section. D'ailleurs, plus précisément, sur ma machine mon site fonctionne avec ou sans la section system.data, c'est pour déployer qu'elle est indispensable. Je ne vais pas m'occuper de ça tout de suite puisque j'ai trouvé comment faire fonctionner ce que j'ai à déployer (il me reste à refaire le support de la traduction par exemple, mais j'ai bon espoir que ça sera moins long).

    J'essaierai d'éplucher ça quand j'aurai un moment, car je ne suis probablement pas le dernier à utiliser ces produits.




    • Modifié Gloops mardi 30 juillet 2013 23:18 orthographe
    mardi 30 juillet 2013 23:11