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 :
J'ai essayé de :
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();
- changer le content-disposition en Attachment
- utiliser ClearHeader et ClearContent.
avec un :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Response.Write(CalendarItem.ToString()); Response.End();
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.
Partager