Как создать в Outlook «подписку на интернет-календарь»? - PullRequest
2 голосов
/ 10 ноября 2010

Для нового приложения в интрасети я бы хотел, чтобы пользователь добавил календарь в свой Outlook , чтобы его можно было легко просмотреть.Календарь будет только для чтения.Как мне создать это?

1 Ответ

4 голосов
/ 10 ноября 2010

Вы должны создать канал iCal , на который может подписаться большинство клиентов. Используйте FileStreamResult в вашем контроллере, чтобы отправить его клиентам. Познакомьтесь со спецификацией ICS, она начинается так:

BEGIN:VCALENDAR PRODID:-//{Calender of something}//NONSGML v1.0//EN
VERSION:1.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:{Name}
X-ORIGINAL-URL:{The Url obviously}
X-WR-CALDESC:{Calendar of Events For a new intranet application}

и заканчивается END:VCALENDAR. А вот и события

BEGIN:VEVENT
DTSTART:20101113
DTEND:20101115
DTSTAMP:20101110T154940
CREATED:20101109T201237
LAST-MODIFIED:20101109T201237
UID:{unique id}
SUMMARY:Nanaimo Artwalk 2010 (Free)
DESCRIPTION:{Description}
LOCATION:{Location}
URL:{url}
END:VEVENT

Сейчас я не очень хорошо знаю формат ICS, поэтому вам стоит больше с ним ознакомиться. В качестве альтернативы вы можете использовать библиотеку с открытым исходным кодом . Когда вы создаете свой канал, запишите его как файл результата.

private static FileResult iCalResult(string ics)
{
    return new FileStreamResult(WriteCal(ics), "text/calendar");
}

private static Stream WriteCal(string ics)
{
    var content = Encoding.ASCII.GetBytes(ics);
    var stream = new MemoryStream(content);
    return stream;
}
...