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 Discussion :

[débutant] Pb ASP / VbScript pas d'interprétation des erreurs


Sujet :

ASP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 43
    Points : 28
    Points
    28
    Par défaut [débutant] Pb ASP / VbScript pas d'interprétation des erreurs
    Bonjour à tous,

    Je suis développeur PHP habituellement, et je connais bien ce langage. Cependant, j'ai du repprendre une appli web en ASP / VBScript sous IIS 5.0.

    Le problème c'est que j'ai passé la journée à essayer de débogguer un programme sans succès, et je n'ai ni erreur d'interprétation ou de compilation pour m'aider. Il semble aussi qu'il y ait une erreur d'interprétation du VBScript. Je craque !

    Alors voilà j'ai plusieurs questions à vous poser :

    1) ASP / VBScript est-il interprété ou compilé (j'ai l'impression que c'est compilé)

    2) Pourquoi, lorsque j'écris des morceaux de codes provenant de la FAQ VBScript dans mon fichier .asp, mon appli génère une page avec une Erreur 500 HTTP ??
    C'est le cas notamment lorque j'utilise des variables typées (As String, Integer...) ou d'autres mots-clé genre ByVal...

    3) Pourquoi, lors d'une erreur ASP, je n'ai aucun message d'erreur et ma page reste blanche ??

    4) ASP est-elle une daube ? Effectivement le PHP ne connaît pas de telles failles !

    Voilà j'aimerai beaucoup que quelqu'un m'aide car là je ne voit pas comment continuer à développer une application sans que le VB soit pris en compte et sans message d'erreur.

    Merci à vous !
    ++

  2. #2
    Membre confirmé
    Avatar de malbaladejo
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2002
    Messages : 379
    Points : 527
    Points
    527
    Par défaut
    1) le code asp est interprété
    2) en asp les variables ne sont pas typé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim strValue 'correct
    Dim strValue As String 'incorrect
    Pour avoir des messages d'erreur parlant il faut :
    - sur internet explorer aller dans outil -> option internet
    - cliquer sur l'onglet avance et decocher la case "Afficher des messages d'erreurs HTTP simplifies
    3) etrange

    4) sans commentaire....

    Le code asp est un peu différent du vbscript.
    Tu devrais consulter la FAQ.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 43
    Points : 28
    Points
    28
    Par défaut
    Merci beaucoup malbaladejo, il est vrai que j'ai un peu poussé concernant ma considération de l'ASP. Mais il faut dire que je me suis tellement habitué au PHP que c'est un peu déroutant au début !

    Sinon j'ai donc d'autres questions sur les différences VB et VBScript intégré à l'ASP :

    - ByVal et ByRef sont-ils implémentés
    - Lorqu'on déclare une fonction, doit-on préciser le type de retour ?
    - "On Error goto qqch" peut-il être utilisé dans une fonction ??

    En fait concernant mon problème d'affichage d'erreur voici le scénario :

    J'ai un formulaire dans lequel j'ai un bouton permettant d'effectuer le submit sur une autre page que l'action de base. Cette fonctionnalité me permet d'effectuer une vérif intermédiaire.
    Une fois cette vérif effectuer, un bouton "fermer" me permet de retourner au premier formulaire avec de nouvelles variables de Session.

    Ces variables sont traitées par le premier formulaire, mais il va de soit que lors de sa première exécution, le formulaire n'a pas connaissance de ces variables car il ne vient pas de la page contenant les vérifs.
    J'ai donc codé la chose suivante :

    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
    <script language="JavaScript">
    <!--
    var engOk = 1;
     
    function valider() {
     
    <%
    Nom_Utilisateurs = "["
    if not isnull(Session.Contents("Indispo")) then
    	tab_indispo = Session.Contents("Indispo")
     
    	'on regarde s'il y a des participants indisponibles dans le tableau tab_indispo
    	if ContientElements(tab_indispo) then	
     
    		'on ajoute à la chaîne le premier utilisateur indisponible
    		Nom_Utilisateurs = Nom_Utilisateurs & tab_indispo(0)
    		'puis tous les autres séparés par un point-virgule
    		for i=1 to ubound(tab_indispo)
    			Nom_Utilisateurs = Nom_Utilisateurs & " ; " & tab_indispo(i)
    		next
     
    		Nom_Utilisateurs = Nom_Utilisateurs & "]" 'enfin on ferme la liste des indisponibles
    	%>
    		alert("<%Nom_Utilisateurs%> n'est ou ne sont pas disponible(s), voulez-vous quand même valider ce rendez-vous ?");
    	<%end if
    end if%>
     
    <%if len(Request("LockSelect")) = 0 then%>
    	Exporter();
    	document.Detail.submit();
    <%else%>
    	self.close();
    <%end if%>
    }
     
    //D'autres fonctions...
     
    //-->
    </script>
    Et ma fonction VBScript (je sais qu'il y a des erreurs)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function ContientElements(ByVal tableau As Variant) As Boolean
    Dim indice As Long
    On Error goto vide
    indice = UBound(tableau)
    ContientElements = True
    Exit Function
    vide:
    End Function
    En effet, au début à la place de cette fonction, j'utilisais ubound de mon tableau > 0 dans ma seconde conditionnelle, mais j'ai remarqué que cela lançait une erreur ASP.

    Malheureusement je ne vois jamais cette erreur, et cela se traduit seulement par une page blanche au niveau de mon navigateur.

    Voilà, merci de m'aider svp !

    ++

  4. #4
    Membre confirmé
    Avatar de malbaladejo
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2002
    Messages : 379
    Points : 527
    Points
    527
    Par défaut
    Ca fait beaucoup d'un coup.

    - ByVal et ByRef sont-ils implémentés => OUI
    - Lorqu'on déclare une fonction, doit-on préciser le type de retour ? => NON
    - "On Error goto qqch" peut-il être utilisé dans une fonction ?? => Pas vraiment.

    Tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    On Error Resume Next 
    ' Toutes les erreurs à partir de cette ligne seront interceptées
    ....
    if err then 
       'S'il y a eu des erreurs
        ...
    End If
    on error goto 0
    'Les erreurs ne sont plus interceptées

  5. #5
    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
    3) Pourquoi, lors d'une erreur ASP, je n'ai aucun message d'erreur et ma page reste blanche ??
    Y a-t-il un "on error resume next" dans ta page?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if err then 
        response.write(err.description)
    End If
    4) ASP est-elle une daube ?
    J'insiste pas, seulement ASP est un langage qui n'évolue plus car remplacé par .NET. Ceci dit il est encore très utilisé. Ferais-tu la comparaison entre PHP et .NET?
    Effectivement le PHP ne connaît pas de telles failles !
    Quelles failles?

    A+

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 43
    Points : 28
    Points
    28
    Par défaut
    Tout d'abord merci beaucoup pour vos réponse, votre aide m'est précieuse car je n'arrive pas à débloquer la situation seul.

    Concernant le non affichage des erreurs, il n'ya pas de ligne contenant "on error resume next" dans mon code, mais peut-être que cette option est automatiquement réalisée au niveau de IIS, est-ce possible ?? Ou bien dans une sorte de asp.ini (je prend ça de php car je ne sais pas trop comment cela est implémenté en asp).

    Pour ASP est-il une daube, j'ai simplement dis ça car j'ai été très surpris de la difficulté à debugger une page ASP comparé à l'interpréteur PHP auquel je m'étais habitué. Mais cela dit quand je parlais de failles, je pensais simplement au niveau de la gestion des erreurs que je trouve compliquée. Il ne s'agit effectivement pas d'une faille à proprement parlé.

    Bon je vais tester tout ça.
    Merci et à++

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 43
    Points : 28
    Points
    28
    Par défaut
    Je comprend rien, j'ai réussis à corriger les erreurs de ma fonction de façon à ce que la page apparaisse la première fois. Voici le code correspondant :

    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
    Function ContientElements(ByVal tableau)
    	Dim indice
    	On Error Resume Next 
    	' Toutes les erreurs à partir de cette ligne seront interceptées
     
    	indice = UBound(tableau)
    	ContientElements = True
     
    	if err then 
    		'S'il y a eu des erreurs
    		ContientElements = False
    		Exit Function
    	End If
     
    	on error goto 0
    	'Les erreurs ne sont plus interceptées
    End Function
    Elle est utilisée plus loin dans :

    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
    <%
    Nom_Utilisateurs = "["
    if not isnull(Session.Contents("Indispo")) then
    	tab_indispo = Session.Contents("Indispo")
     
    	'on regarde s'il y a des participants indisponibles dans le tableau tab_indispo
    	if ContientElements(tab_indispo) then	
     
    		'on ajoute à la chaîne le premier utilisateur indisponible
    		Nom_Utilisateurs = Nom_Utilisateurs & tab_indispo(0)
    		'puis tous les autres séparés par un point-virgule
    		for i=1 to ubound(tab_indispo)
    			Nom_Utilisateurs = Nom_Utilisateurs & " ; " & tab_indispo(i)
    		next
     
    		Nom_Utilisateurs = Nom_Utilisateurs & "]" 'enfin on ferme la liste des indisponibles
    	%>
    		alert("<%Nom_Utilisateurs%> n'est ou ne sont pas disponible(s), voulez-vous quand même valider ce rendez-vous ?");
    	<%end if
    end if%>
    Donc la page s'affiche, mais si je rajoute response.write(err.description) alors là elle plante ???

    Sinon je clique sur "vérifier" pour appeler mon script de vérif qui lui m'ajoute une variable de Session et retourne dans la page précédente (celle qui contient le code ci-dessus).
    Seulement là elle affiche une page blanche, et sans notification d'erreur quelconque...

    C'est à rien n'y comprendre ! ASP ne signale donc pas automatiquement les erreurs ??

    Merci pour votre aide !

    ++

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 43
    Points : 28
    Points
    28
    Par défaut
    Bon jai changé mon script parce que ça ne vas pas. J'ai cependant une autre question, ASP reconnaît-il les booléens ? Parce que bool = True renvoit une erreur, donc j'en déduit que c'est comme en PHP et qu'il faut utiliser bool = "vrai".

    ++

  9. #9
    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
    Non non, true fonctionne.
    Seulement parfois il faut utiliser la valeur Binaire (0 ou 1 ou -1 dans Access).
    A+

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 43
    Points : 28
    Points
    28
    Par défaut
    Ok j'ai vu après que c'était possible en enlevant le mot-clé "dim".
    Par contre je m'en sors toujours pas avec ma procédure. J'effectue désormais mes vérifs dans la même page (code javascript) donc exit le passage d'une variable de Session. Seulement c'est le bordel :
    J'ai
    Participants.MoveFirst
    Response.write(Participants.RecordCount)
    et celui-ci me retourne encore cette foutu page blanche !!! Je comprend pas pourquoi je n'ai pas une erreur...

    Bon cette fois je vous donne mon code entier :

    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
    57
    <script language="JavaScript">
    <!--
    var engOk = 1;
     
    function valider() {
     
    <%
    Participants.MoveFirst
    Response.write(Participants.RecordCount)
     
     
    if Participants.RecordCount>0 then
    	bool = False 'boolean pour alerte en cas d'indisponibilité
    	Redim tabIndispo(Participants.RecordCount) ' redimensionnement du tableau
    	indice = 0
     
    	Participants.MoveFirst									
    	while not Participants.EOF
    		Response.write(Participants("Id") & vbCrLf)
    		if verifDispo(Participants("Id")) = False then
    			bool = True 	'il y a au moins un participant indisponible donc alerte
    		end if
    		Participants.MoveNext
    	wend
     
    	if bool = True then
    		Nom_Utilisateurs = "["	
     
    		'on regarde s'il y a des participants indisponibles dans le tableau tab_indispo
    		if ContientElements(tab_indispo) then	
     
    			'on ajoute à la chaîne le premier utilisateur indisponible
    			Nom_Utilisateurs = Nom_Utilisateurs & tab_indispo(0)
    			'puis tous les autres séparés par un point-virgule
    			for i=1 to ubound(tab_indispo)
    				Nom_Utilisateurs = Nom_Utilisateurs & " ; " & tab_indispo(i)
    			next
     
    			Nom_Utilisateurs = Nom_Utilisateurs & "]" 'enfin on ferme la liste des indisponibles
    		%>
    		alert("<%Nom_Utilisateurs%> n'est ou ne sont pas disponible(s), voulez-vous quand même valider ce rendez-vous ?");
    		return false;
    		<%end if
    	end if										
    	Participants.Close
    end if%>
     
    <%if len(Request("LockSelect")) = 0 then%>
    	Exporter();
    	document.Detail.submit();
    <%else%>
    	self.close();
    <%end if%>
    return true;
    }
     
    // d'autres fonctions js dont Exporter()
    J'ai l'impression que l'ASP est interprété ligne par ligne, et donc, même si je n'appelle jamais la fonction javascript valider(), le code ASP qu'elle contient plante le navigateur car il est interprété avant qu'il soit appelé... Vous me suivez ??

    Aidez-moi svp car avec ces foutus pages blanches je vois pas comment débugguer !!!

    Merci d'avance !
    ++

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 43
    Points : 28
    Points
    28
    Par défaut
    Une dernière chose, j'ai l'impression que mes Response.Write() ne s'affichent pas...

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 43
    Points : 28
    Points
    28
    Par défaut
    J'ai remarqué que tout cela était du à ma fonction Javascript. Quand je fais Response.write() dans ma fonction javascript, cela n'affiche rien et c'est normal car il aurait fallu écrire document.write(Response.write(...)).

    Cela étant, j'ai remodelé ma procédure en ceci :
    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
     
    function valider() {
     
    	<%
    	bool = False 'boolean pour alerte en cas d'indisponibilité
    	Redim tabIndispo(Participants.RecordCount) ' redimensionnement du tableau
    	indice = 0
     
    	Response.write("indexD = document.Detail.ListLibre.options.length;" & vbCrLf & "for (i = 1; i < indexD; i++) {")
    		if verifDispo(Response.write("document.Detail.ListLibre.options[i].value")) = False then
    			bool = True 	'il y a au moins un participant indisponible donc alerte
    		end if
    	Response.write("}")
     
     
    	if bool = True then
    		Nom_Utilisateurs = "["	
     
    		'on regarde s'il y a des participants indisponibles dans le tableau tab_indispo
    		if ContientElements(tab_indispo) then	
     
    			'on ajoute à la chaîne le premier utilisateur indisponible
    			Nom_Utilisateurs = Nom_Utilisateurs & tab_indispo(0)
    			'puis tous les autres séparés par un point-virgule
    			for i=1 to ubound(tab_indispo)
    				Nom_Utilisateurs = Nom_Utilisateurs & " ; " & tab_indispo(i)
    			next
     
    			Nom_Utilisateurs = Nom_Utilisateurs & "]" 'enfin on ferme la liste des indisponibles
     
    			Response.write("alert('" & Nom_Utilisateurs & " n'est ou ne sont pas disponible(s), voulez-vous quand même valider ce rendez-vous ?');" & vbCrLf & "return false;")
    		end if
    	end if										
    %>
     
    <%if len(Request("LockSelect")) = 0 then%>
    	Exporter();
    	document.Detail.submit();
    <%else%>
    	self.close();
    <%end if%>
    return true;
    }
    Le problème vient maintenant de l'association vb / js qui ne marche pas fort.
    J'ai toujours une page blanche comme seul résultat...

    Merci d'avance pour votre aide !

    ++

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 43
    Points : 28
    Points
    28
    Par défaut
    Bon, pour en finir avec ce sujet, j'ai donc finalement l'impression que l'interprétation ASP plante dès qu'une erreur VBScript intervient.
    Ex : appel d'une variable inéxistante ==> page blanche dans le navigateur

    Voilà donc vraiment pas facile de débugguer !!!

    Sur ce, @++

Discussions similaires

  1. Interprétation des erreurs en Java ?
    Par Ziranium dans le forum Langage
    Réponses: 6
    Dernier message: 17/07/2011, 22h05
  2. interprétation des erreurs de connexion
    Par guy_antoine_mav dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 29/08/2008, 10h00
  3. Réponses: 3
    Dernier message: 20/05/2008, 14h57
  4. Réponses: 2
    Dernier message: 07/01/2008, 11h46
  5. Réponses: 3
    Dernier message: 22/08/2007, 15h52

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