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

时间:2013-09-16 19:02:12

标签: asp.net-mvc outlook icalendar

是否有任何官方来源对Outlook“internet calendar subscription ”进行编程,在链接中描述为

  

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

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

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

  • webcal://
  • 开头
  • .ics文件名
  • 结尾

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

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

  • 我是否可以通过修改操作来“伪造”网址的ICS文件/文件名部分,例如[ActionName("iCalFeed.ics")]

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

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

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

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

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

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

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

我在绳子尽头。如果它回答有关实际构建生成正确日历订阅的网站的问题,我愿意阅读文档。除了strange conversion "algorithm"之外,我在MSDN上找不到任何内容。而且,就我所知,它没用。

<小时/> 为了清楚起见,我可以为任何用户生成一个基本的ICS文件,并手动在Outlook中启动它。我根本无法使用任何网络链接。

<小时/> 这些其他日历RFC是否可以发挥作用:iTIPiMIP

2 个答案:

答案 0 :(得分:1)

  

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

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

  

WebDAV的日历扩展(CalDAV

     

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


  

方法(RFC2445 4.7.2方法)?

RFC 2445废弃了RFC 2445,因此您可能对differences between 5545 and 2445感兴趣,以便您可以尝试适应两者的交集。


  

我在绳子尽头。如果它回答有关实际构建生成正确日历订阅的网站的问题,我愿意阅读文档。

所有这些标准都由CalConnect维护,discussion lists具有您可能会使用的{{3}}。

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

答案 1 :(得分:0)

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

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

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

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

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

<小时/> *您可能需要明确允许该路由匿名。在我的系统中,我必须使用带有<location>的{​​{1}}标记来绕过我的表单身份验证。如果您确实需要安全性,请查看Google的功能。他们创建一个包含每个用户/日历的GUID令牌的URL,并要求您保护它。