2010-05-19 5 views
1

Je construis un site ASP où j'utilise response.write pour créer un fichier ics où un utilisateur peut choisir ouvrir ou enregistrer la boîte de dialogue pour l'événement. Lorsque l'utilisateur choisit ouvert, Outlook donne parfois l'erreur "Le fichier [] .ics" n'est pas un fichier calendrier Internet valide ".C'est toujours le même événement qui est écrit dans la réponse.Le code ressemble à ceci:Création fichier .ics à partir du code donne parfois "Le fichier <filename> [<index>] .ics" n'est pas un fichier de calendrier Internet valide

this.Response.ContentType = "text/calendar"; 
this.Response.AddHeader("Cache-Control", "no-cache, must-revalidate");    
this.Response.AddHeader("Pragma", "no-cache"); 
this.Response.Expires = -1;   
this.Response.AddHeader("Content-disposition", string.Format("attachment; filename={0}.ics",filename)); 
this.Response.Write("BEGIN:VCALENDAR"); 
this.Response.Write("\nVERSION:2.0"); 
this.Response.Write("\nMETHOD:PUBLISH"); 
this.Response.Write("\nBEGIN:VEVENT"); 
this.Response.Write("\nType:Single Meeting"); 
this.Response.Write("\nORGANIZER:MAILTO:" + organizer); 
this.Response.Write("\nDTSTART:" + startDate.ToUniversalTime().ToString(DateFormat)); 
this.Response.Write("\nDTEND:" + endDate.ToUniversalTime().ToString(DateFormat)); 
this.Response.Write("\nLOCATION:" + location); 
this.Response.Write("\nUID:" + Guid.NewGuid().ToString()); 
this.Response.Write("\nDTSTAMP:" + DateTime.Now.ToUniversalTime().ToString(DateFormat)); 
this.Response.Write("\nSUMMARY:" + summary); 
this.Response.Write("\nDESCRIPTION:" + description); 
this.Response.Write("\nPRIORITY:5"); 
this.Response.Write("\nCLASS:PUBLIC"); 
this.Response.Write("\nEND:VEVENT"); 
this.Response.Write("\nEND:VCALENDAR"); 
this.Response.End(); 

Je reçois habituellement l'erreur la première fois que je tente d'ouvrir l'événement dans Outlook, et il fonctionne la deuxième fois.

Est-ce que quelqu'un sait comment résoudre ce problème?

Répondre

1

il semble que la réponse .Clear() au tout début et Flush before End résout le problème ...

Questions connexes