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 :

Connexion ouverte alors que c'est pas vrai


Sujet :

ASP.NET

  1. #1
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut Connexion ouverte alors que c'est pas vrai
    Désolé pour le titre, mais en fait, je sais pas quoi mettre.
    Mon souci n'est pas trés clair car je ne sais même pas trop par où commencer.

    Je vais tenter de planter le contexte (et pas le serveur ! ) et faire des commentaire sur la pile que je poste plus bas.

    Donc, j'ai mis un GridView dans mon composant Utilisateur, qui se trouve dans une page qui fait référence à une MasterPage.
    Mon GridView se rempli bien. Il est construit pour partie dans le CodeBehind avec une fabrication des colonnes dynamique. Il est liée à un sqlDataSource dont je place la SelectComamnde dans le Init du Composant, le reste étant dans le code HTML.

    Bref, tout se passe bien jusqu'au moment où je clique sur le ButtonField que j'ai placé à la fin de chaque ligne.
    Ce bouton field est censé m'ouvrir une popup par le biais d'un JScript. Le code JScript n'est pas à remettre en cause car le souci n'est avec lui et il fonction aussi bien dans d'autre cas.

    Ce qu'il se passe c'est ça :
    La connexion n'est pas fermée. L'état actuel de la connexion est ouvert.
    Et la pile indique cela et je vous donne des commentaires ensuite :
    [InvalidOperationException: La connexion n'est pas fermée. L'état actuel de la connexion est ouvert.]
    System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +16
    System.Data.SqlClient.SqlConnection.Open() +111
    FrameWorkTechnique.ADO.DataManager.ExecuterRequeteSimple(String requete) +251

    [AppExecption: La connexion n'est pas fermée. L'état actuel de la connexion est ouvert.]
    FrameWorkTechnique.ADO.DataManager.ExecuterRequeteSimple(String requete) +372
    OutilWeb.OutilsOW.GetApplicationGUID() +111
    OutilWeb.OutilsOW.ParametresOW() +36
    OutilWeb_Liste_Modules.Page_PreInit(Object sender, EventArgs e) +54
    System.Web.UI.Page.OnPreInit(EventArgs e) +104
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1515
    La ligne +54 est dans la apge qui contient le Composant, et donc celle au-dessus aussi.
    La fonction GetApplicationGUID et appelé dans la fonction ParametresOW et les deux font appel à la BDD.

    Mais je ne comrpends aps pourquoi la connexion est ouverte. Le truc qui me permet de faire appel à l aBDD est dans un FrameWork maison qui gère l'ouverture et la fermeture de la connexion à la base.
    Donc j'en ai déduit que c'est le GridView qui prend la connexion et ne la lâche pas.
    Alors comment faire pour en être sûr ?
    Et dans l'affirmative, comment faire pour qu'il ne se recharge pas en cliquant sur le ButtonField ?

    Merci pour votre aide.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Ben a priori c'est la méthode ExecuterRequeteSimple qui essaie d'ouvrir la connexion, sans vérifier si elle est déjà ouverte...

  3. #3
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Pourtant le FrameWork maison qu'on a fait pour gérer les appel à la BDD et donc qui définit cette méthode vérifie l'état de la connexion avant de faire des choses.

    Voici le code de cette fonction, tout ce fait avec un TRY :
    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
     
    Public Function ExecuterRequeteSimple(ByVal requete As String) As DataTable
                Try
                    ' On assigne une requêtes parametrée à la commande
                    Dim commande As New SqlCommand(requete)
     
                    ' On lui assigne une connexion
                    commande.Connection = Me.Conex
     
                    Adapteur = New SqlDataAdapter(commande)
                    Dim oCommandBuilder As New SqlCommandBuilder(Adapteur)
     
                    Table = New DataTable()
                    Conex.Open()
                    Adapteur.Fill(Table)
     
                    Return Table
                Catch ex As Exception
                    Throw New AppExecption(ex)
                Finally
                    Me.Conex.Close()
                End Try
     
            End Function
    Mais surtout ce que j'aimerais bien savoir c'est : qui ouvre la connexion avant ? Mais je trouve pas le moyen. Je suppose que c'est le GridView, vu qu'il qu'il ne travaille pas avec le FrameWork Maison.

    Alors si c'est bien lui, je voudrais pouvoir lui dire que, lrosqu'on clique sur ce bouton, il n' a pas besoins de ce recharger.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par zooffy Voir le message
    Pourtant le FrameWork maison qu'on a fait pour gérer les appel à la BDD et donc qui définit cette méthode vérifie l'état de la connexion avant de faire des choses.
    Pas dans le code que tu montres en tous cas... tu devrais tester la propriété State de la connexion

  5. #5
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Ouais, je ferais ça lors de la prochaine mise à jour de notre FrameWork.

    Je ne pense pas que le souci vienne de là. En fait, lorsque la page se charge, cette méthode et d'autres sont lu tout à fait normalement, sans poser de souci. le GridView est bien chargé et tous les paramettres de la page sont bien pris en compte.

    Puis je clique sur mon Button et là, j'ai le message. Pour faire des test, j'ai demande au Button de récupérer le contenu d'une cellule du GridView et de l'envoyer dans un label que j'ai mis en haut de la page.
    donc, une fois que j'ai el mesage d'erreur, je tape sur F5 et là, tout redevient normal : le GridView est bien rempli et le contenu de la cellule choisie est biend ans le Label.
    Si je reclique sur une autre ligne, pareil : message, F5, tout bon.

    J'ai fait un test avec le bouton "Modifier" : là pas de souci il ouvre les champs, permet la saisie et enregistre les modifications.

    Bref, j'y perd mon Assembleur...................

  6. #6
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    J'ai poussé le vice un peu plus loin encore, histoire de bien manipuler le tout.
    J'ai tout basculer dans du CodeBehind.

    Voici mon code actuel :
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    	Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
    		Dim gv As New GridView
    		Dim sds As New SqlDataSource
    		With sds
    			.ID = "sdsCampagne"
    			.DataSourceMode = SqlDataSourceMode.DataSet
    			.ConnectionString = ConfigurationManager.ConnectionStrings("CS").ConnectionString
    			.SelectCommand = "EXEC dbo.ListeCampagne '" & GetApplicationGUID().ToString & "'"
    			.DataBind()
    		End With
     
    		Dim id_campagne, libelle, regie As New BoundField
    		Dim apercu As New ButtonField
    		With id_campagne
    			.ItemStyle.CssClass = "invi"
    			.HeaderStyle.CssClass = "invi"
    			.FooterStyle.CssClass = "invi"
    			.DataField = "Id_Campagne"
    		End With
    		With libelle
    			.DataField = "Libelle"
    			.HeaderText = "Libelle"
    			.SortExpression = "Libelle"
    		End With
    		With regie
    			.DataField = "Regie"
    			.HeaderText = "Régie"
    			.SortExpression = "Regie"
    		End With
    		With apercu
    			.CommandName = "Apercu"
    			.ButtonType = ButtonType.Image
    			.ImageUrl = "~/App_Themes/" & GetNomsite() & "/loupe.png"
    			.CausesValidation = False
    		End With
     
    		With gv.Columns
    			.Add(id_campagne)
    			.Add(libelle)
    			.Add(regie)
    			.Add(apercu)
    		End With
    		With gv
    			.PageSize = 15
    			.AllowPaging = True
    			.PagerSettings.Mode = PagerButtons.NumericFirstLast
    			.PagerSettings.Position = PagerPosition.Bottom
    			.AllowSorting = True
    			.AutoGenerateColumns = False
    			.DataSourceID = sds.ID
    		End With
     
    		ListingCampagne.Controls.Add(sds)
    		ListingCampagne.Controls.Add(gv)
    	End Sub
    Tout marche bien, sauf quand je clique sur le Button.
    J'ai passé en revue toute les méthodes et propriétés du GridView mais je n'en trouve pas une qui permet de lui dire de pas se recharger.

    Je commence à désepérer.

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    ben là je sèche...

  8. #8
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Ben c'est fort ennuyeux. Parce que, visiblement, tu es le seul à apercevoir le problème, els autrs aussi on l'air de sécher.

    Bon, je vais tenter d'autre choses, si quelqu'un a une idée.......

  9. #9
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Bon, je boucle le sujet parce que, visiblement, maintenant ça marche.

    Je ne sais pas pourquoi, mais ça marche.
    En fait j'ai tout rebasculer côté HTML. Je suis persuadé que je vasi avoir plein de souci, mais j'aviserais au moment opportun. Et aussi, j'ai tout remis dans un UpdatePanel, peut être que c'est ça ou alors ça venait du MultiView, je sais pas.

    En fait, j'en ia déjà un, mais c'est de l'AJAX, donc j'ouvre un autre topic.

    Merci pour ton aide.

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Bon, je boucle le sujet parce que, visiblement, maintenant ça marche.

    Je ne sais pas pourquoi, mais ça marche.
    Magnifique illustration de la citation dans ma signature, partie sur "la pratique"

  11. #11
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Oauis, c'est bien vrai.

    Mais en fait, j'ai fait trop vite, mais je réouvre pas pour autant. J'espère que t'es assis, parce là, ça devient fort.

    Vu que j'ai mis un UpdatePanel, ben ça masque certains trucs.

    J'ai mis un Logage() (c'est ma fonction pour capter des truc et les mettre dans un fichier texte) sur err.Description dans ma fonction RowCommand de mon Gridiew. Et bien lorsque je clique sur le ButtonField, ben il me log le message sur la connexion ouverte mais il fait tout ce que je luis demande dans la Fonction du Button. Vraiment bizarre.

    J'ai un autre Gridview qui marche apreil et vu que je l'avais fait directement avec un UpdatePanel, j'avasi jamais vu le mesage. Mais je viens de loguer pareil et j'ai la même chose. Du coup, le UpdatePanel me cahce des choses et fini par faire ce que j'attends de lui. Bref, le UpdatePanel est un brave garçon.

    Si seulement il pouvait m'aider à trouver une femme........

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Là ça devient surréaliste
    Sinon, pour trouver une femme j'ai quelques adresses sur le net, mais... pas de pub sur le forum

    EDIT: ton SqlDataSource, il est dans l'UpdatePanel ? Ca pourrait expliquer qu'il essaie de se reconnecter à la mise à jour du panel...

  13. #13
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Non, le SQlDataSource est avant le UpdatePanel, côté HTML.
    Mais la SelectCommand est définie dans le Page_Init. Je suis obligé de passer par là car je lui envoi des paramettres non figé dans la requête et ces paramettres sont récupérer par une fonction

    Mais ce qui m'assoit le plus, c'est qu'il marche et donne le bon résulat, sauf qu'il y a un message d'erreur qui ne s'affiche pas. Vraiment bizarre comme truc.

    Affaire à suivre, mais pour l'instatn ça marche, alors si ça me pose un souci, je verrais à ce moment là.

    PS : pour les adresses, fais péter en MP, mais oubli les grands classiques, je les ai tous fait.

  14. #14
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    J'ai parlé trop vite.
    Pour une raison que j'ignore, maintenant il me balance les messages sous forme de popup de type Alert

    Il faisait pas ça la semaine dernière. Je me demande ce qu'il a bien pui faire pendant ce long, long week-end......

Discussions similaires

  1. Réponses: 10
    Dernier message: 22/12/2009, 19h58
  2. [AC-2002] Me.OpenArgs Null alors que ce n'est pas vrai
    Par jaffael dans le forum VBA Access
    Réponses: 3
    Dernier message: 08/06/2009, 17h32
  3. Un URL qui ressemble a un GET alors que c'est un POST
    Par neoncyber dans le forum Langage
    Réponses: 2
    Dernier message: 27/05/2007, 18h20
  4. Réponses: 7
    Dernier message: 30/03/2007, 14h58
  5. [VB 6]Fichier ouvert alors que je l'ai fermé (je comprend pas)
    Par devock dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 07/02/2007, 23h33

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