Создание файла .ics из кода иногда дает «Файл <filename>[<index>]. Ics» не является допустимым файлом Интернет-календаря. - PullRequest
1 голос
/ 19 мая 2010

Я создаю сайт ASP, где я использую response.write для создания файла ics, где пользователь может выбрать открыть или сохранить диалог для события. Когда пользователь выбирает открыть, Outlook иногда выдает ошибку «Файл [] .ics» не является допустимым файлом Интернет-календаря ». Это всегда одно и то же событие, которое записывается в ответ. Код выглядит так:

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();

Обычно я получаю сообщение об ошибке при первой попытке открыть событие в Outlook, и оно работает во второй раз.

Кто-нибудь знает, как решить эту проблему?

1 Ответ

1 голос
/ 19 мая 2010

Кажется, что Response.Clear () в самом начале и Flush before End решает проблему ...

...