编程Outlook"互联网日历订阅"的官方文档在哪里?

Ant*_*ean 7 asp.net-mvc icalendar outlook

是否有任何官方资源来编写Outlook" 互联网日历订阅 ",在链接中描述为

Internet日历订阅是您在Outlook中下载和查看的日历.但是,与日历快照不同,Internet日历订阅会自动更新.

我正在使用ASP.NET MVC和DDay.iCal库.我创建这样的日历是不成功的.我需要具体问题的答案.我厌倦了猜测.我不会接受随机代码,指向过时代码项目文章的链接或任何其他非权威性的内容.

我唯一具体的信息是URL必须

  • 首先 webcal://
  • .ics文件名结尾

我必须为每个用户生成一个唯一且最新的日历,最好是每次Outlook轮询该地址时.我想避免将日历更新挂钩到网站的CRUD部分.所以,我需要了解一些关于Outlook接受的细节.

  • FileResult当Outlook命中地址时,我可以使用返回(或派生:流,内容,路径)的控制器/操作来动态生成日历吗?

  • 我可以通过修改动作来"伪造"URL的ICS文件/文件名部分[ActionName("iCalFeed.ics")]吗?

  • 我可以用a ActionLink来创建webcal动作的链接<%= Html.ActionLink("Connect to Outlook", "iCalFeed.ics", "Schedule", "webcal", null, null, null, null) %>吗?

我以特别的方式尝试了其中的一些东西,Outlook喜欢弹出并处理webcal链接,但它没有显示任何内容并且没有显示任何错误消息.是否有地方可以挖掘Outlook Web日历导入错误?

如果没有上述问题,每次Outlook轮询地址时是否有另一种方式提供新内容?我宁愿不与网站上的CRUD操作同步更新日历.这似乎比必要的更复杂.

无论哪种方式,我还需要知道Outlook所需的iCalendar规范部分需要正确更新"订阅".我导入了一个有效的 ICS文件作为常规"快照",只有开始/结束日期,摘要和位置.但是,显然,规范中有一些棘手的部分,比如

  • 我是否必须设置METHOD(RFC2445 4.7.2方法)?我甚至找不到这个属性的正确描述或它接受的值(它是客户端特定的吗?).

  • 我是否必须根据系统的CRUD操作跟踪事件UID并更改其处置?或者是在后续轮询中添加/删除/更新日历中的事件,以便Outlook能够解决这个问题?如果我必须跟踪,现在我必须为我的应用程序添加一整层持久性和状态感知.

  • 如果我保持跟踪,我在其他SO问题中注意到Outlook对于该ORGANIZER属性是真正挑剔的......它是否必须是电子邮件地址?一个mailto:链接还是一个地址?

我已经走到了尽头.如果它回答有关实际构建生成正确日历订阅的网站的问题,我愿意阅读文档.我没有在MSDN上找到任何东西,除了这个奇怪的转换"算法".而且,就我所知,它没用.


为了清楚起见,我可以为任何用户生成一个基本的ICS文件,并手动在Outlook中启动它.根本无法让我的任何网络链接工作.


这些其他日历RFC是否会发挥作用:iTIPiMIP

Ant*_*ean 0

我还没有找到任何合适的文档,但我发现了 Outlook 的一些行为。关于“互联网日历订阅”的 webcal/ics 要求

  • Outlook 可以使用http://地址
  • Outlook 可以使用不以以下字符结尾的路由.ics

您可以在 Outlook 中亲自尝试这些 | 打开日历 | 来自互联网。您可能仍想使用ActionLink/webcal 链接,以便浏览器提示您启动可以处理请求的应用程序。

至于其余的控制器/动作要求......

  • Outlook 发出匿名请求*
  • Outlook 可以接受二进制/流/字符串FileResult类型的控制器操作


* 您可能需要明确允许该路由匿名。在我的系统中,我必须使用<location>带有<allow users="?" />. 如果您确实需要安全性,请看看 Google 是做什么的。他们为每个用户/日历创建一个包含 GUID 令牌的 URL,并要求您保护它。