Для нового приложения интрасети я хотел бы сообщить пользователю add a calendar to their Outlook, чтобы его можно было легко просмотреть. Календарь будет доступен только для чтения. Как мне это сделать?Как создать подписку на интернет-календарь Outlook?
2
A
ответ
4
Вы должны создать iCal feed, на который могут подписаться большинство клиентов. Используйте контроллер 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:20101109T2
LAST-MODIFIED:20101109T2
UID:{unique id}
SUMMARY:Nanaimo Artwalk 2010 (Free)
DESCRIPTION:{Description}
LOCATION:{Location}
URL:{url}
END:VEVENT
Теперь я не знаю, формат ICS действительно хорошо, так что вы должны получить более знакомы с ним. В качестве альтернативы вы можете использовать an open-source library. Когда вы создаете фид, напишите его как результат файла.
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;
}
Спасибо! Я не знал, существует ли «способ перспективы» или он должен генерироваться iCal. Тогда я создам iCal. –
есть перспективный способ сделать это через обмен веб-сервисами, управляемый api, но это проще и больше клиент агностик. – Sevki