none
Problème QueryString RRS feed

  • Question

  • Bonjour dans une url j'ai un parametre appelé param1 contenant : parametre1&nbsp;&nbsp; parametre2 <br> valeur1 &nbsp;&nbsp; valeur 2

    Le problème est que ce code :

    Dim param1 As String = Request.QueryString("param1")
    

    me donne juste "parametre1" et pas ce qu'il y a derrière , d'avance merci

    samedi 18 juin 2011 09:48

Réponses

  • Bonjour,
     
    Ce n'est pas une url valide.
    & est le séparateur de paramètres dans une url (d'ou le résultat obtenu)
    Le problème est donc à la génération de l'url et non pas lors de sa
    lecture..
    Il faut l'encoder au moyen de System.Web.HttpUtility.UrlEncode
     
    À noter qu'il n'est pas nécessaire de la décoder dans le code fourni.
    QueryString s'en charge.
     

    Fred
    samedi 18 juin 2011 11:34
  •  
    > Voila c'est sa que je voudrais faire en faite plus précisément
    > j'aimerais récupérer le contenu du fichier txt présent sur le poste
    > client en sachant que je crée ce fichier à partir de mon application
    > client donc j'ai accès à ce que je met dedans.
    >
    > N'y à t'il pas moyen d'ouvrir un fichier présent sur un poste client à
    > partir de mon application web?
    >
    Non
    >
    > Ou alors d'envoyer à partir de l'application cliente (win forms) le
    > fichier vers le serveur de l'application web?
    >
     
    Oui,
    Le plus simple étant d'utiliser ceci :
     
    > Sinon il ne me reste plus que de tous mettre dans l'url mais la j'ai
    > le problème décrit plus haut.
    >
     
    Résolu avec la méthode UrlEncode.
     
    Sinon, n'écrivez pas du html dans votre fichier local pour résoudre un
    problème cosmétique dans l'application Web.
    Utilisez simplement la méthode Replace d'une chaîne pour substituer un
    "<br />" aux sauts de ligne.
    Par ailleurs, je vous conseille également (avant le Replace), de faire
    un HtmlEncode :
    En effet, que se passe-t-il si votre fichier contient les symboles <, >,
    & ? Pouvez-vous avoir le cas ?
     

    Fred
    dimanche 19 juin 2011 12:43
  • Difficile à diagnostiquer sans plus d'éléments.
    Je pencherais pour un problème de droits d'accès.
    - Avez-vous testé en local ? À priori vous adressez une application web déjà déployée sur un serveur distant.
    - Y a-t-il un erreur si vous ouvrez http://site1.com/Upload.aspx dans un navigateur ? Si oui, pouvez-vous le tester directement sur le serveur et renvoyer ici le message détaillé d'erreur ? Ou alors donner la valeur Off à l'attribut mode de l'élément customErrors dans le fichier web.config, à ne pas laisser ainsi ensuite, de façon à ce que l'erreur ASP.NET s'affiche même en accès distant. Par défaut, c'est une page générique d'erreur (500 dans votre cas) qui est renvoyée aux clients distants et qui ne présente pas beaucoup d'intérêt pour la mise au point.



    Fred
    • Marqué comme réponse Hugo7 jeudi 30 juin 2011 11:02
    mercredi 22 juin 2011 11:37

Toutes les réponses

  • Bonjour,

     

    Je sais pas comment tu récupère le contenu de param1 mais peut etre qu'il faudra le convertir en string (toString) d'abord 

     

    Cordialement


    Best Regards Please mark as answer if my post is helpful
    samedi 18 juin 2011 10:26
  • Bonjour,
     
    Ce n'est pas une url valide.
    & est le séparateur de paramètres dans une url (d'ou le résultat obtenu)
    Le problème est donc à la génération de l'url et non pas lors de sa
    lecture..
    Il faut l'encoder au moyen de System.Web.HttpUtility.UrlEncode
     
    À noter qu'il n'est pas nécessaire de la décoder dans le code fourni.
    QueryString s'en charge.
     

    Fred
    samedi 18 juin 2011 11:34
  • Merci pour les réponses , voila comment je créer mon url :

     Dim url As New System.IO.StreamReader(My.Application.Info.DirectoryPath + "\fichier.txt", True)
          wbarcodes(0) = "h" + wbarcodes(0).Substring(1) + "&param2=" + url.ReadToEnd.ToString
          System.Diagnostics.Process.Start(wbarcodes(0))

    Je ne vois pas à quel endroit je doit encoder cette url , d'avance merci

    samedi 18 juin 2011 11:57
  • - Où est le param1 dont il était question initialement ?
    - Quel est le contenu exact du fichier ? Y a-t-il vraiment du markup
    html à l'intérieur ?
     
    Je dirais, bien que cela me semble étrange, de remplacer :
    + url.ReadToEnd.ToString
    par
    + System.Web.HttpUtility.UrlEncode(url.ReadToEnd.ToString)
     
    Mais je ne suis pas sûr qu'en corrigeant des bouts de code isolés on
    arrive à une solution pertinente.
    De quoi s'agit-il globalement ?
     
     

    Fred
    samedi 18 juin 2011 13:11
  • En faite en gros j'ai une application qui crée un fichier .txt et après elle charge une page avec en paramètre dans l'url le chemin pour atteindre le fichier sur l'ordinateur genre "C:\Program Files\log\fichier.txt. Puis la page web charge le contenu du fichier et l'insère dans une bdd.

    Ensuite j'affiche ce contenu dans un formview , le problème c'est que il m'affiche le contenu tous en ligne or je voudrais qu'il soit comme dans le fichier texte , c'est à dire avec les retour à la ligne les plusieurs espaces entre les mots...

    Je me suis dit donc que lorsque je crée le fichier , je n'avais qu'a remplacer les retour à la ligne par des <br> et les espaces par des &nbsp; car le formview sait interpréter le code html.

    Jusque là sa allait mais le premier problème était que lorsque j'avais mis ma page en ligne  , il me mettait l'erreur concernant le chemin du fichier , qu'il ne trouvait pas une parti du chemin du fichier donc qu'il ne pouvait pas y accéder.

    Donc je me suis dit que je n'avais qu'à mettre le contenu du fichier dans l'url et donc avec les <br> et les &nbsp; .

    Et donc j'en suis la ^^.

    Voila d'avance merci pour l'aide

    samedi 18 juin 2011 15:48
  • Désolé mais je ne comprends pas ce que vous essayez de faire !
    Vous avez deux applications : une application cliente (win forms ou
    console) et une application web ?
    Si c'est bien cela, vous voulez que l'application web aille chercher un
    fichier qui se trouve sur le poste client ?
    (C'est heureusement impossible.)
    Pouvez-vous définir la problématique plutôt que la façon dont vous
    essayez de la résoudre ?
     

    Fred
    samedi 18 juin 2011 16:03
  • Voila c'est sa que je voudrais faire en faite plus précisément j'aimerais récupérer le contenu du fichier txt présent sur le poste client en sachant que je crée ce fichier à partir de mon application client donc j'ai accès à ce que je met dedans.

    N'y à t'il pas moyen d'ouvrir un fichier présent sur un poste client à partir de mon application web?

    Ou alors d'envoyer à partir de l'application cliente (win forms) le fichier vers le serveur de l'application web?

    Sinon il ne me reste plus que de tous mettre dans l'url mais la j'ai le problème décrit plus haut.

    D'avance merci



    samedi 18 juin 2011 19:18
  •  
    > Voila c'est sa que je voudrais faire en faite plus précisément
    > j'aimerais récupérer le contenu du fichier txt présent sur le poste
    > client en sachant que je crée ce fichier à partir de mon application
    > client donc j'ai accès à ce que je met dedans.
    >
    > N'y à t'il pas moyen d'ouvrir un fichier présent sur un poste client à
    > partir de mon application web?
    >
    Non
    >
    > Ou alors d'envoyer à partir de l'application cliente (win forms) le
    > fichier vers le serveur de l'application web?
    >
     
    Oui,
    Le plus simple étant d'utiliser ceci :
     
    > Sinon il ne me reste plus que de tous mettre dans l'url mais la j'ai
    > le problème décrit plus haut.
    >
     
    Résolu avec la méthode UrlEncode.
     
    Sinon, n'écrivez pas du html dans votre fichier local pour résoudre un
    problème cosmétique dans l'application Web.
    Utilisez simplement la méthode Replace d'une chaîne pour substituer un
    "<br />" aux sauts de ligne.
    Par ailleurs, je vous conseille également (avant le Replace), de faire
    un HtmlEncode :
    En effet, que se passe-t-il si votre fichier contient les symboles <, >,
    & ? Pouvez-vous avoir le cas ?
     

    Fred
    dimanche 19 juin 2011 12:43
  • Merci beaucoup pour la réponse.

    La question que je me pose est que si je met le contenu dans l'url sans les <br> comment je pex utiliser la méthode replace pour remplacer les sauts à la ligne par des <br> car l'application web ne saura pas oû il doit avoir des sauts de ligne.Et il y a toujours le problème des espaces.

    Donc le mieux est de combiner la méthode UploadFile et de faire apres une méthode remplace pour les sauts de ligne et les espace , ou alors de garder les <br> et les espaces dans mon fichier.txt et de ne faire qu'un Uploadfile.

     

    D'avance merci pour les infos

    dimanche 19 juin 2011 17:22
  • J'ai un petit souci avec ce code :

      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        My.Computer.Network.UploadFile("C:\Documents and Settings\Travail(hugo)\Mes documents\test.txt", "http://site1/test.aspx")
    
      End Sub
    


    Il me dit en fait que le serveur envoi une erreur 404.

    Donc je croit qu'il faut que je fasse un truc sur ma page web , mais quoi?

    D'avance merci pour l'aide

    lundi 20 juin 2011 14:20
  •  
    > Il me dit en fait que le serveur envoi une erreur 404.
    >
     
    Fichier non trouvé : Dans l'environnement de développement, si vous
    cliquez bouton droit sur test.aspx et demandez l'affichage dans le
    navigateur, cela fonctionne-t-il ?
    >
    > Donc je croit qu'il faut que je fasse un truc sur ma page web , mais quoi?
    >
    Pouvez-vous fournir le code de votre page test.aspx que l'on puisse voir
    si le code est bien similaire à celui de l'exemple ?
     
     

    Fred
    lundi 20 juin 2011 14:35
  • Merci pour la réponse , oui j'arrive à afficher ma page , mais le truc c'est que je n'ai rien mis dans ma page web d'où le fait que je dit qu'il doit y avoir un truc a mettre .
    lundi 20 juin 2011 18:29
  • Dans l'exemple fourni, il faut reprendre la partie cliente, mais aussi
    la partie serveur :
     
     

    Fred
    mardi 21 juin 2011 05:15
  • Merci pour la réponse , maintenant l'erreur que me renvoi mon application cliente (win forms ) est : Le serveur distant a retourné une erreur : (500) Erreur interne du serveur.

     

    Voici le code de mon application cliente :

     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        My.Computer.Network.UploadFile("C:\Documents and Settings\Travail(hugo)\Mes documents\test.txt", "http://site1.com/Upload.aspx")
    
      End Sub

    Voici le code de ma page Upload.aspx qui est en ligne  :

     Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        
        Dim f As String
        Dim file
        For Each f In Request.Files.AllKeys
          file = Request.Files(f)
          file.SaveAs("c:\inetpub\test\UploadedFiles\" & file.FileName)
        Next f
    
      End Sub
    

    Merci pour l'aide :)

    mercredi 22 juin 2011 10:26
  • Difficile à diagnostiquer sans plus d'éléments.
    Je pencherais pour un problème de droits d'accès.
    - Avez-vous testé en local ? À priori vous adressez une application web déjà déployée sur un serveur distant.
    - Y a-t-il un erreur si vous ouvrez http://site1.com/Upload.aspx dans un navigateur ? Si oui, pouvez-vous le tester directement sur le serveur et renvoyer ici le message détaillé d'erreur ? Ou alors donner la valeur Off à l'attribut mode de l'élément customErrors dans le fichier web.config, à ne pas laisser ainsi ensuite, de façon à ce que l'erreur ASP.NET s'affiche même en accès distant. Par défaut, c'est une page générique d'erreur (500 dans votre cas) qui est renvoyée aux clients distants et qui ne présente pas beaucoup d'intérêt pour la mise au point.



    Fred
    • Marqué comme réponse Hugo7 jeudi 30 juin 2011 11:02
    mercredi 22 juin 2011 11:37