IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Problème avec hébergement OVH et application ASP .NET en C#


Sujet :

ASP.NET

  1. #21
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    C'est pas .Net qui recycle la connexion résultat, la connexion qu'il a crée pour sa requête est réutilisée mais les 60sec sont passé et elle est coupée?
    http://msdn.microsoft.com/fr-fr/libr...=vs.80%29.aspx

  2. #22
    Futur Membre du Club
    Profil pro
    PAS DE POSTE
    Inscrit en
    Juillet 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : PAS DE POSTE

    Informations forums :
    Inscription : Juillet 2007
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Voici le code qui provoque l'erreur. Rien de bien compliqué :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    List<Appartement> appList = new List<Appartement>();
    Appartement newAppartement = null;
    try
    {
    	SqlConnection conn = new SqlConnection();
    	conn.ConnectionString = m_connectionString;
    	SqlCommand cmd = new SqlCommand();
     
    	conn.Open();
    	cmd.Connection = conn;
     
    	if (conn.State == ConnectionState.Open)
    	{
    		cmd.CommandText = "FindAllAppartement";
    		cmd.CommandType = CommandType.StoredProcedure;
     
    		cmd.Parameters.Add("@errCode", SqlDbType.Int);
    		cmd.Parameters["@errCode"].Direction = ParameterDirection.Output;
     
    		SqlDataReader myReader = cmd.ExecuteReader();
     
    		while (myReader.Read())
    		{
    			newAppartement = new Appartement(myReader.GetInt32(0));
    			newAppartement.Cage = myReader.GetInt32(1);
    			newAppartement.Etage = myReader.GetInt32(2);
    			newAppartement.Aile = myReader.GetString(3);
    			newAppartement.TypeAppartement = myReader.GetString(4);
    			[...]
    			appList.Add(newAppartement);
    		}
    		myReader.Close();
    		conn.Close();
    	}
    	else
    	{
    		throw new Exception("Ouverture de la connexion impossible");
    	}
    }
    catch (Exception ex)
    {
    	throw new Exception("Impossible de charger les données depuis la base de donnée. Cause :", ex);
    }
    La question que je me pose est quelle est la bonne façon de connecter une application ASP .NET à un serveur MySQL chez OVH ?
    les seules infos sont ici : http://guides.ovh.net/bddmutuwindows

    Le support OVH vient de me dire ne pas utiliser le connecteur MySQL .NET et de faire :
    ce sont des connecteurs ODBC installés coté serveur, vous n'avez aucune dll a appeler.
    Donc vous avez uniquement à ajouter la ligne suivante dans votre fichier web.config:
    <connectionStrings>
    <add name="BMREConnString" connectionString="Server=;Database=;Uid=;Pwd=;pooling=false;" providerName="MySql.Data.MySqlClient" />
    </connectionStrings>
    Problème. Si je fais ça j'obtiens :
    ---> System.Data.SqlClient.SqlException: Une erreur liée au réseau ou spécifique à l'instance s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur est introuvable ou n'est pas accessible. Vérifiez que le nom de l'instance est correct et que SQL Server est configuré pour autoriser les connexions distantes. (provider: Named Pipes Provider, error: 40 - Impossible d'ouvrir une connexion à SQL Server) ---> System.ComponentModel.Win32Exception: Le chemin réseau n’a pas été trouvé --- Fin de la trace de la pile d'exception interne
    J'ai effectué des tests en ajoutant dans la connectionString les infos de connexion appropriées.
    J'ai bien sûr supprimé de mon code tout ce qui concerne le connecteur et l'utilisation du connecteur MySQL .NET. Je n'utilise que le framework .NEt 4.0.

    Mais j'ai l'impression que les instructions données sont pour du SQL Server, pas du MySQL...

    Par contre, j'avais bien eu la confirmation d'OVH que la connexion était coupée automatiquement au bout de 60 sec d'inactivité mais je ne suis pas dans ce cas puisque je lance la requête plusieurs fois / minute.

  3. #23
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Citation Envoyé par polysil Voir le message
    Voici le code qui provoque l'erreur. Rien de bien compliqué
    Et pourtant je suis un peu contrarié que tu ne tiennes pas compte de nos conseils. On passe du temps a essayer de résoudre ton pb c'est un peu la moindre des choses:
    1. Merci de coder selon les bonnes pratiques en utilisant des using. Tu es dispensé d'appeler la méthode Close();
    2. Déclare la variable newAppartement dans la boucle while.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    using (SqlConnection conn = new SqlConnection())
    {
        using (SqlCommand cmd = new SqlCommand())
        {
            using (SqlDataReader myReader = cmd.ExecuteReader())
            {
                while (myReader.Read())
                {
                    var newAppartement = new Appartement(myReader.GetInt32(0));
                    appList.Add(newAppartement);
                }
            }
        }
    }
    Merci de nous poster le code corrigé.
    Citation Envoyé par polysil Voir le message
    Le support OVH vient de me dire ne pas utiliser le connecteur MySQL .NET et de faire :
    Donc vous avez uniquement à ajouter la ligne suivante dans votre fichier web.config:
    <connectionStrings>
    <add name="BMREConnString" connectionString="Server=;Database=;Uid=;Pwd=;pooling=false;" providerName="MySql.Data.MySqlClient" />
    </connectionStrings>
    Question bête, mais je la pose quand même: tu as bien valorisé la chaîne de connexion?
    "Winter is coming" (ma nouvelle page d'accueil)

  4. #24
    Futur Membre du Club
    Profil pro
    PAS DE POSTE
    Inscrit en
    Juillet 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : PAS DE POSTE

    Informations forums :
    Inscription : Juillet 2007
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Désolé Immobilis. N'y vois pas une mauvaise volonté de ma part, c'est juste que je souhaitais ne pas faire de modification pour le support OVH.
    J'ai confirme que j'ai mis à jour le site avec les corrections et voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    List<Appartement> appList = new List<Appartement>();
    Appartement newAppartement = null;
    try
    {
        using (SqlConnection conn = new SqlConnection())
        {
            conn.ConnectionString = ConfigurationManager.ConnectionStrings["BMREConnString"].ConnectionString;
            conn.Open();
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.Connection = conn;
     
                cmd.CommandText = "FindAllAppartement";
                cmd.CommandType = CommandType.StoredProcedure;
     
                cmd.Parameters.Add("@errCode", SqlDbType.Int);
                cmd.Parameters["@errCode"].Direction = ParameterDirection.Output;
     
                using (SqlDataReader myReader = cmd.ExecuteReader())
                {
                    while (myReader.Read())
                    {
                        newAppartement = new Appartement(myReader.GetInt32(0));
                        appList.Add(newAppartement);
                    }
                }
            }
        }
    }
    catch (Exception ex)
    {
        throw new Exception("Impossible de charger les données depuis la base de donnée. Cause :", ex);
    }
    return appList;
    La connectionString est la suivante (web.config) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <connectionStrings>
    <add name="BMREConnString" 
            connectionString="Server=mysqlxxx.perso;Database=xxx;Uid=xxx;Pwd=xxx;pooling=false;" 
            providerName="MySql.Data.MySqlClient" />
    </connectionStrings>
    Je précise que les valeurs de la connectionString m'ont été fournies par OVH lors de la création de la base.

    Résultat :

    System.Data.SqlClient.SqlException: Une erreur liée au réseau ou spécifique à l'instance s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur est introuvable ou n'est pas accessible. Vérifiez que le nom de l'instance est correct et que SQL Server est configuré pour autoriser les connexions distantes. (provider: Named Pipes Provider, error: 40 - Impossible d'ouvrir une connexion à SQL Server) ---> System.ComponentModel.Win32Exception: Le chemin réseau n’a pas été trouvé --- Fin de la trace de la pile d'exception interne --- à System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) à [...]

  5. #25
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Tu utilises une SqlConnection qui est faite pour SQLserver et non pour MySQL c'est pour ça que ça ne marche pas.
    Sinon tu as le forum OVH qui est pas mal : http://forum.ovh.com/forumdisplay.php?f=49

  6. #26
    Futur Membre du Club
    Profil pro
    PAS DE POSTE
    Inscrit en
    Juillet 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : PAS DE POSTE

    Informations forums :
    Inscription : Juillet 2007
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    C'est bien ça qui me trouble. SQL Server vs MySQL ...
    Mais comment accéder à une base MySQL sans utiliser les DLL du connecteur MySQL .NET ?
    Voici les instructions OVH :
    Bonjour,
    ce sont des connecteurs ODBC installés coté serveur, vous n'avez aucune dll a appeler. Donc vous avez uniquement à ajouter la ligne suivante dans votre fichier web.config:
    <connectionStrings>
    <add name="BMREConnString" connectionString="Server=;Database=;Uid=;Pwd=;pooling=false;" providerName="MySql.Data.MySqlClient" />
    </connectionStrings>
    Et ensuite, pour récupérer les informations il vous suffit d'utiliser:
    myConnection = ConfigurationManager.ConnectionStrings["BMREConnString"].ConnectionString
    Cordialement
    Pourtant, j'ai bien précisé plusieurs fois au support OVH que j'avais une BDD MySQL.

    Je n'ai malheureusement pas accès au forum OVH. Les inscriptions sont fermées. J'ai fait une demande d'accès au support OVH mais elle toujours sans réponse.

  7. #27
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    C'est autre chose le provider ODBC:
    http://msdn.microsoft.com/fr-fr/libr...onnection.aspx

  8. #28
    Futur Membre du Club
    Profil pro
    PAS DE POSTE
    Inscrit en
    Juillet 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : PAS DE POSTE

    Informations forums :
    Inscription : Juillet 2007
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Pour moi, il y a un gros mélange des technologies dans les directives données par le support OVH (et peut être moi aussi).
    En me référant à leur guide http://guides.ovh.net/bddmutuwindows
    et si je reprends leur exemple :
    Serveur : srv-sql001
    Utilisateur : login
    Nom de la base : domaine
    Mot de passe : password
    Sachant que j'ai une application ASP .NET basée sur la version 4.0 du framework et une base de donnée MySQL, ma connectionString devrait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    connectionString="Server=srv-sql001;Database=domaine;Uid=login;Pwd=password;pooling=false;"
    ou
    connectionString="Driver={MySQL ODBC 5.1 Driver};Server=srv-sql001;Database=domaine;Uid=login;Pwd=password;Pooling=false;Option=3;" />
    Par contre, dans mon code, quel "librairie" utiliser ?
    • System.Data.Odbc ?
    • System.Data.SqlClient ?
    • Autre ?


    Pour le moment, rien ne fonctionne, y compris avec le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    using (OdbcConnection conn = new OdbcConnection())
    {
    	conn.ConnectionString = ConfigurationManager.ConnectionStrings["BMREConnString"].ConnectionString;
    	conn.Open();
    	using (OdbcCommand cmd = new OdbcCommand())
    	{
    		cmd.Connection = conn;
    		cmd.CommandText = "FindAllAppartement";
    		cmd.CommandType = CommandType.StoredProcedure;
    		cmd.Parameters.AddWithValue("@errCode", 0);
    		cmd.Parameters["@errCode"].Direction = ParameterDirection.Output;
    		using (OdbcDataReader myReader = cmd.ExecuteReader())
    		{
    			while (myReader.Read())
    			{
    				newAppartement = new Appartement(myReader.GetInt32(0));
    				appList.Add(newAppartement);
    			}
    		}
    	}
    }
    Résultat
    System.Data.Odbc.OdbcException: ERROR [IM002] [Microsoft][Gestionnaire de pilotes ODBC] Source de données introuvable et nom de pilote non spécifié à System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode) à System.Data.Odbc.OdbcConnectionHandle..ctor(OdbcConnection connection, OdbcConnectionString constr, OdbcEnvironmentHandle environmentHandle)

  9. #29
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Tu pourrais peut être utiliser la fabrique et les interfaces comme indiqué dans la FAQ et ainsi laisser le Framework gérer. Avec le nom du provider il utilisera les objets appropriés.
    "Winter is coming" (ma nouvelle page d'accueil)

  10. #30
    Futur Membre du Club
    Profil pro
    PAS DE POSTE
    Inscrit en
    Juillet 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : PAS DE POSTE

    Informations forums :
    Inscription : Juillet 2007
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    En utilisant le système des fabriques j'obtiens :
    System.ArgumentException: Chaîne non vide attendue pour le paramètre 'providerInvariantName'. à System.Data.Common.ADP.CheckArgumentLength(String value, String parameterName)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    // Creation de la fabrique
    DbProviderFactory factory = DbProviderFactories.GetFactory(
    	ConfigurationManager.ConnectionStrings["BMREConnString"].ProviderName);
     
    using (IDbConnection conn = factory.CreateConnection())
    {
    	conn.ConnectionString = ConfigurationManager.ConnectionStrings["BMREConnString"].ConnectionString;
    	conn.Open();
    	using (IDbCommand cmd = factory.CreateCommand())
    	{
    		cmd.Connection = conn;
    		cmd.CommandText = "FindAllAppartement";
    		cmd.CommandType = CommandType.StoredProcedure;
    		using (IDataReader myReader = cmd.ExecuteReader())
    		{
    			while (myReader.Read())
    			{
    				newAppartement = new Appartement(myReader.GetInt32(0));
    				appList.Add(newAppartement);
    			}
    		}
    	}
    }
    et le web.config

    <connectionStrings>
    <add name="BMREConnString"
    connectionString="Server=mysqlxxx;Database=xxx;Uid=xxx;Pwd=xxx;Pooling=false;"
    providerName="MySql.Data.MySqlClient" />
    </connectionStrings>
    Note : Même résultat si je ne précise pas le providerName.

  11. #31
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Alors là... Des pistes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <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.2.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    	</DbProviderFactories>
    </system.data>
    En espérant que la version soit la bonne, sinon, il faudra leur demander.
    "Winter is coming" (ma nouvelle page d'accueil)

  12. #32
    Futur Membre du Club
    Profil pro
    PAS DE POSTE
    Inscrit en
    Juillet 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : PAS DE POSTE

    Informations forums :
    Inscription : Juillet 2007
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    J'attends la réponse du support OVH ...
    Je vous communiquerais les résultats dès que possible.

  13. #33
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Citation Envoyé par polysil Voir le message
    J'attends la réponse du support OVH ...
    Tu n'as pas essayé?
    "Winter is coming" (ma nouvelle page d'accueil)

  14. #34
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut J'ai le même problème
    Je suis aussi chez OVH et j'ai le même problème en utilisant mysql.
    Avez-vous réussit à trouver d'où vient ce bug ?

Discussions similaires

  1. problème avec positionnement des elements en ASP.NET
    Par af.zakaria dans le forum ASP.NET
    Réponses: 2
    Dernier message: 12/04/2012, 08h41
  2. problème en installation d'une application asp.net
    Par zh_developpeur dans le forum ASP.NET
    Réponses: 1
    Dernier message: 02/02/2011, 11h45
  3. Réponses: 2
    Dernier message: 07/05/2010, 17h42
  4. Réponses: 1
    Dernier message: 30/01/2010, 21h50
  5. problème avec une Table en C# asp.net
    Par duffman dans le forum ASP.NET
    Réponses: 9
    Dernier message: 23/04/2009, 12h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo