如何创建 Outlook“互联网日历订阅”?

Mik*_*lls 2 c# asp.net-mvc calendar outlook-2007

对于新的 Intranet 应用程序,我想让用户将日历添加到他们的 Outlook 中,以便可以轻松查看。日历将是只读的。我该如何去创造这个?

Sev*_*vki 5

您应该创建一个大多数客户都可以订阅的iCal 提要FileStreamResult在您的控制器中使用 a将其发布给客户端。熟悉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}
Run Code Online (Sandbox Code Playgroud)

并以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
Run Code Online (Sandbox Code Playgroud)

现在我不太了解 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;
}
Run Code Online (Sandbox Code Playgroud)