7

是否有任何官方资源用于编程 Outlook“互联网日历订阅”,在链接中描述为

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

我正在使用 ASP.NET MVC 和DDay.iCal 库。我一直没有成功创建这样一个日历。我需要具体问题的答案。我厌倦了猜测。而且我不会接受随机代码、过时的 codeproject 文章的链接或任何其他非权威的内容。

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

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

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

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

  • 我可以通过装饰动作来“伪造” URL 的 ICS 文件/文件名部分,例如[ActionName("iCalFeed.ics")]

  • 我可以使用 anActionLink创建webcal操作的链接,例如<%= Html.ActionLink("Connect to Outlook", "iCalFeed.ics", "Schedule", "webcal", null, null, null, null) %>

我以特别的方式尝试了其中一些东西,Outlook 喜欢弹出和处理webcal链接,但它什么也不显示,也不显示错误消息。是否有地方可以挖掘 Outlook Web 日历导入错误?

如果对上述问题不满意,是否有另一种方法可以在 Outlook 每次轮询地址时提供新鲜内容?我宁愿不更新日历与站点上的 CRUD 操作同步。这似乎比必要的复杂。

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

  • 我必须设置METHODRFC2445 4.7.2 方法)吗?我什至找不到对这个属性或它接受的值的体面描述(它是特定于客户的吗?)。

  • 我是否必须跟踪事件 UID 并根据系统的 CRUD 操作更改它们的处置?或者在随后的轮询中添加/删除/更新日历中的事件是否足以让 Outlook 弄清楚?如果我必须跟踪,现在我必须为我的应用程序添加一整层持久性和状态感知。

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

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


需要明确的是,我可以为任何用户生成一个基本的 ICS 文件并在 Outlook 中手动启动它。我根本无法让我的任何 webcal 链接正常工作。
这些其他日历 RFC 是否发挥作用:[iTIP](https://www.rfc-editor.org/rfc/rfc2446) 和 [iMIP](https://www.rfc-editor.org/rfc/rfc2447) ?
4

2 回答 2

1

我必须设置方法(RFC2445 4.7.2 方法)吗?我什至找不到对这个属性或它接受的值的体面描述(它是特定于客户的吗?)。

有关方法,请参阅WebDavCalDav规范。

WebDAV 的日历扩展 (CalDAV

本文档定义了 Web 分布式创作和版本控制 (WebDAV) 协议的扩展,以指定基于 iCalendar 格式访问、管理和共享日历和日程安排信息的标准方式。本文档定义了 CalDAV 的“日历访问”功能。


方法(RFC2445 4.7.2 方法)?

RFC 2445 已被 RFC 5545 淘汰,因此您可能会对5545 和 2445 之间的差异感兴趣,以便尝试适应两者的交集。


我已经走到尽头了。如果它回答了有关实际构建生成适当日历订阅的网站的问题,我愿意阅读文档。

所有这些标准都由CalConnect维护,其中包含您可能会发现使用的讨论列表。

抱歉,我没有更多用处,因为我对 Outlook 的个人实践经验很少,但有很多参与 CalConnect 的人知道所有互操作细节。

于 2013-09-17T16:40:21.390 回答
0

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

  • Outlook 可以使用http://地址
  • Outlook 可以使用不以.ics

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

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

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


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

于 2013-09-17T14:53:36.637 回答