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 Response.Binarywrite


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2002
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 13
    Par défaut Problème avec Response.Binarywrite
    Bonjour à tous,

    Apres plusieurs recherches, je n'ai pas trouvé de solution à mon problème alors me voici.

    Je suis sur un petit générateur de fichier ICalendar.
    L'application est une page Aspx generant un objet Icalendar de ma conception basé sur des informations d'un évènement stockées dans une base de données (sql server).

    j'ai surchargé le ToString() de mon objet Icalendar pour restituer son contenu au format attendu.

    enfin j'ecrit cette string contenant les informations de l'ical dans le flux de response pour proposer de l'enregistrer directement.

    Le traitement se déroule bien en local et mon fichier est correct.
    Toutefois en le déployant sur le serveur de production, le fichier ics généré est toujours vide, 0 octets. j'ai tracé les propriétés de mon objet et la chaine devant etre ecrite et tout est pourtant ok.

    voici le code utilisé pour l'écriture sur le flux de response :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    byte[] buffer = Encoding.Default.GetBytes(CalendarItem.ToString());
                    Response.Clear();
                    Response.AddHeader("Content-Disposition", "inline; filename="+CalendarItem.filename);
                    Response.AddHeader("Content-Length", buffer.GetLength(0).ToString());
                    Response.ContentType = "application/octet-stream";
                    Response.BinaryWrite(buffer);
                    Response.Flush();
                    Response.Close();
    J'ai essayé de :
    - changer le content-disposition en Attachment
    - utiliser ClearHeader et ClearContent.


    avec un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Response.Write(CalendarItem.ToString());
    Response.End();
    je retrouve bien le contenu devant être envoyé au client. je suppose donc que c'est le BinaryWrite qui pose problème, mais je ne vois pas trop ,de solution.

    je me demander si ajouter le type ics en type mime sur le IIS du serveur pourrais solutionner le problème, parce que normalement IIS ne devrait même pas me proposer de Télécharger le fichier ics si le type mime n'était pas pris en charge.

    Est-ce que quelqu'un a déjà été confronté au problème ou aurait une idée à ce sujet ?

    merci d'avance !

    /gential.

  2. #2
    Expert confirmé
    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
    Par défaut
    Salut,

    As-tu essayé en remplaçant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                    Response.Flush();
                    Response.Close();
    ParA+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Expert confirmé
    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
    Par défaut
    Citation Envoyé par Immobilis Voir le message
    As-tu essayé en remplaçant
    Argh, pas bien réveillé moi ce matin...
    "Winter is coming" (ma nouvelle page d'accueil)

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2002
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 13
    Par défaut
    @Tomlev : je n'utilise pas response.write car je ne veux pas écrire le flux texte sur la response, je veux proposer un enregistrement de fichier. Mon expérience en ASP.NET n'est pas très grande donc je dit peut-être une énormité, mais je l'ai pense comme ca


    @Immobilis : Ce Response.End() me sauve la vie, c'est tout bête mais ca règle le problème.
    Toutefois, j'aimerais comprendre en quoi ca change par rapport a flush+close, sachant que surtout en local ca fonctionne avec flush/close.

    si tu peux m'éclairer la dessus je suis preneur.

    En tout cas un grand merci, c'est résolu !

  5. #5
    Expert confirmé
    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
    Par défaut
    Citation Envoyé par Gential Voir le message
    si tu peux m'eclairer la dessus je susi preneur.
    http://msdn.microsoft.com/en-us/libr...nse.close.aspx
    http://msdn.microsoft.com/en-us/libr...ponse.end.aspx

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  6. #6
    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 Gential Voir le message
    avec un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Response.Write(CalendarItem.ToString());
    Response.End();
    je retrouve bien le contenu devant être envoyé au client. je suppose donc que c'est le BinaryWrite qui pose problème, mais je ne vois pas trop ,de solution.
    Bah pourquoi tu fais pas comme ça alors ? Tu n'as pas besoin d'écrire manuellement en binaire ; Response.Write peut gérer ça pour toi, et en plus il utilisera l'encodage de la réponse (alors que toi tu utilises explicitement un encodage spécifique, qui n'est peut-être pas celui de la réponse)

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/06/2012, 09h09
  2. Problème avec Response.Flush
    Par Loki13 dans le forum ASP
    Réponses: 1
    Dernier message: 12/12/2008, 10h36
  3. Problème avec Response.write et <!DOCTYPE .. >
    Par Gunny dans le forum ASP.NET
    Réponses: 2
    Dernier message: 22/07/2008, 15h41
  4. problème avec <%Response.CacheControl="Public"%>
    Par hicham_alaoui1 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 15/09/2007, 19h56
  5. [C#] Problème avec Response.Redirect
    Par elbj dans le forum ASP.NET
    Réponses: 6
    Dernier message: 03/03/2006, 15h30

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