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 :

Modification d'en-tête http


Sujet :

ASP.NET

  1. #1
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut Modification d'en-tête http
    Bonjour à tous !

    J'ai une page maPage.aspx standard qui génère dynamiquement des lien hypertext (qui pointent vers des fichiers du serveur).

    J'ai besoin que le tout premier lien soit ouvert automatiquement par le browser ou le programme par défaut.

    En cherchant un peu j'ai pu modifier mon en-tête http de maPage.aspx pour que l'url par défaut soit le fichier à ouvrir.

    j'ai donc du code de ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.Page.Response.Redirect("file://C:\toto.txt",true);
    Ce qui veut dire que ma page est redirigée vers ce fichier, or, le problème est que cette page disparait au profil du fichier qui est ouvert.

    J'aurai donc besoin de garder cette page : maPage.aspx mais il faudrait par contre qu'elle ouvre soit en popup soit une nouvelle page web, au démarrage et que ce soit le fichier en question qui s'ouvre.

    En gros je veux :

    - ouvrir une seconde page aspx (par exemple)
    - modifier l'en-tete si besoin de cette seconde page pour avoir le fichier d'ouvert par défaut.

    Ce qui fait au final que maPage.aspx reste ouverte et l'utilisateur peut tjs la visionner et travailler dessus.

    Vous me suivez ?

    merci d'avance !


  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
    Par défaut
    Il faut ouvrir le nouveau fichier en Javascript dans l'évènement onLoad de la page :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ...
    <script language="javascript">
        function openNewWindow()
        {
            window.open("file://C:/toto.txt"); 
        }
    </script>
    <body onLoad="openNewWindow()">
    ...

    Par contre ça m'étonnerait que ça fonctionne : la plupart des navigateurs actuels bloquent les popups, et en plus ça m'étonnerait que du code javascript soit autorisé à ouvrir un fichier local... (sauf peut-être si la page elle-même est en local)

    EDIT: je confirme... j'ai testé avec 3 navigateurs différents, si la page est accédée en HTTP (et non en local avec file://), ça fait une erreur "accès refusé" sur le fichier local

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 444
    Par défaut
    Je comprends pas trop le problème initial.
    Vous voulez avoir une page par défaut ? C'est un paramétrage au niveau du serveur Web.

  4. #4
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut
    Je ré explique pas de soucis.

    J'ai une page aspx maPage.aspx, durant le OnLoad de cette page, je créé dynamiquement des liens hypertext vers des fichiers qui apparaissent à l'utilisateur.

    Je voudrais que cette page maPage.aspx se lance tjs ainsi, sauf qu'il faudrait dans l'absolu que lors de l'ouverture, le premier fichier soit ouvert automatiquement dans une nouvelle page (par une redirection ou autre) ou dans un popup, de sorte que le programme par défaut me l'ouvre.
    Si l'utilisateur ferme le fichier ouvert, il faut qu'il puisse cliquer sur les autres liens de maPage.aspx.

    tu vois mieux?

    La le code que j'ai utilisé, je l'ai inséré dans le source de maPage.aspx, donc si tu veux au démarrage de cette page, le fichier s'ouvre, sauf que comme j'ai redirigé ma page vers un fichier, eh bien une fois le fichier fermé, je n'ai plus de page web.

    EDIT:

    Citation Envoyé par tomlev Voir le message

    EDIT: je confirme... j'ai testé avec 3 navigateurs différents, si la page est accédée en HTTP (et non en local avec file://), ça fait une erreur "accès refusé" sur le fichier local
    Mes fichiers sont en local sur le serveur web, et actuellement j'avais fait un accès via fille://. Je fais un test la pour voir si cela fonctionne.

    EDIT 2: je viens de tester cela fonctionne, maintenant l'idéal serait que dans le code c# de maPage.aspx; je puisse modifier le contenu du code javascript.

  5. #5
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    tu as essayé de voir avec l'attribut Target de tes liens hypertext pour voir si cela ne correspondait pas à ton besoin?

  6. #6
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut
    J'ai trouvé une solution qui fonctionne grâce aux précédents posts, cela donne un bout de code comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    string strScript = "<script language=\"javascript\">";
    strScript = strScript + "function openNewWindow()";
    strScript = strScript + "{";
    strScript = strScript + "window.open(\"file://\\monServeur/FICHIER/FICHIER_DIVERS/88782.tif\")";
    strScript = strScript + "}";
    strScript = strScript + "</script>";
     
    this.Response.Write(strScript);
    Seulement je trouve que c'est assez "lourd" de modifier mon code behind de cette façon, y a t il une autre solution?

    merci d'avance

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 444

  8. #8
    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
    Par défaut
    Citation Envoyé par Freud44 Voir le message
    Seulement je trouve que c'est assez "lourd" de modifier mon code behind de cette façon, y a t il une autre solution?
    Si c'est juste le nom du fichier qui change, tu peux mettre ça dans le code aspx :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <script language="javascript">
    function openNewWindow()
    {
        window.open(<%= filename %>)
    }
    </script>

  9. #9
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut
    Aussi, peut on modifier les options d'internet explorer (exemple; enlever la barre d'adresse et d'outils) à l'ouverture d'une nouvelle page? et ce, par le biais du code behind ?

    merci tout le monde !

    EDIT :

    Citation Envoyé par tomlev Voir le message
    Si c'est juste le nom du fichier qui change, tu peux mettre ça dans le code aspx :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <script language="javascript">
    function openNewWindow()
    {
        window.open(<%= filename %>)
    }
    </script>
    Par contre côté c#, comment mettre à jour la variable filename ?

    je la déclare en tant que variable dans le source ?

  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
    Par défaut
    Citation Envoyé par Freud44 Voir le message
    Aussi, peut on modifier les options d'internet explorer (exemple; enlever la barre d'adresse et d'outils) à l'ouverture d'une nouvelle page? et ce, par le biais du code behind ?
    C'est une option de window.open :

    Code Javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    window.open("URL","nom_de_la_fenetre","options_de_la_fenetre");
    Les options disponibles sont les suivantes :

    directories = yes/no Affiche ou non les boutons de navigation
    location = yes/no Affiche ou non la barre d'adresse
    menubar = yes/no Affiche ou non la barre de menu (fichier, edition, ...)
    resizable = yes/no Définit si la taille de la fenêtre est modifiable ou non
    scrollbars = yes/no Affiche ou non les ascenceurs (barres de défilement)
    status = yes/no Affiche ou non la barre d'état
    toolbar = yes/no Affiche ou non la barre d'outils
    width = largeur (en pixels) Définit la largeur
    height = hauteur (en pixels) Définit la hauteur

    Tu peux utiliser le même principe que pour l'URL, avec une variable en code-behind

    Citation Envoyé par Freud44 Voir le message
    Par contre côté c#, comment mettre à jour la variable filename ?

    je la déclare en tant que variable dans le source ?
    Oui, déclare la comme variable membre de ta classe. Tu peux aussi utiliser une méthode si tu préfères

  11. #11
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut
    j'ai copié exactement ton code, et dans la partie C# de ma page aspx, j'ai déclaré une variable string qui s'appelle filename.

    Au moment ou la page se charge, au niveau du code j'ajoute une valeur à la variable filename, mais j'ai une erreur au lancement de la page web, ca me dit que la variable n'existe pas dans le contexte actuel.

    Peut être l'ai je mal déclarée?

  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
    Par défaut
    Citation Envoyé par Freud44 Voir le message
    Peut être l'ai je mal déclarée?
    ben j'en sais rien, vu que je sais pas comment tu l'as déclarée

  13. #13
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut
    mille excuses....

    voici du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public partial class ViewDrawing : System.Web.UI.Page
    {
     protected string strURL = "";
     
    protected void Page_Load(object sender, EventArgs e)
    {
     
    if (!Page.IsPostBack)
    {
    strURL = "file://KFRSNA04/FICHIER/FICHIER_DIVERS/88782.tif";
    }
    }
    }
    Je pense que cela suffit non ?

  14. #14
    Membre Expert
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Par défaut
    Enlève le if du IsPostBack pour voir ?
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  15. #15
    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
    Par défaut
    Bizarre... dans ton code aspx tu as mis "<%= strURL %>" ?

  16. #16
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut
    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
     
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <title>Page sans titre</title>
     
    <head id="Head1" runat="server"> 
    </head>
     
    <script language="javascript">
     
        function openNewWindow()
        {
            window.open(<%= strURL %>)
    //          window.open("file://SERVEUR/FICHIER/FICHIER_DIVERS/88782.tif");
        }
    </script>
     
    <body onLoad="openNewWindow()">		
     
    </body>        
     
     
    </html>
    Voila mon code

  17. #17
    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
    Par défaut
    euh... normalement une page ASP.NET commence par une directive "<%@ Page ... %>"

    J'ai fait le test, ça fonctionne très bien, par contre si j'enlève la directive Page j'ai la même erreur que toi

  18. #18
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut
    Désolé j'avais pas mis ce code, mais pourtant je l'ai bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ViewDrawing.aspx.cs" Inherits="MyWebProject.Custom.ViewDrawing" %>
     
    <%@ Register assembly="****UI.WebControls, Version=2.0.0.1, Culture=neutral, PublicKeyToken=32c4883b3253ed4b" namespace="****.UI.WebControls" tagprefix="LC" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <asp:PlaceHolder id="PlaceHolder1" runat="server"></asp:PlaceHolder>
    Tout ce code se situe juste avant les balises html.

    Par contre au lancement, je n'ai pas de message d'erreur, mais une erreur de script (le point jaune en bas d'internet explorer) qui me dit qu'à la ligne N° 20, un objet est attendu.

    Cela correspond à la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onLoad="openNewWindow()">
    EDIT :

    J'ai trouvé mon erreur, elle se situait au niveau du chemin d'accès dans l'appel du window.open et aussi il me manquait la balise de fin du <\script>.

    Merci à tous !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. En têtes http
    Par gattous dans le forum Apache
    Réponses: 4
    Dernier message: 31/01/2008, 00h44
  2. modification de l'entete http
    Par gorgonite dans le forum Zend Framework
    Réponses: 1
    Dernier message: 13/10/2007, 20h27
  3. Réponses: 1
    Dernier message: 18/12/2006, 11h57

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