是否有任何官方来源对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文件作为常规“快照”,只有开始/结束日期,摘要和位置。但是,显然,规范中有一些棘手的部分,比如
我是否必须设置METHOD
(RFC2445 4.7.2方法)?我甚至找不到这个属性的正确描述或它接受的值(它是客户特定的吗?)。
我是否必须根据系统的CRUD操作跟踪事件UID并更改其处置?或者是在后续轮询中添加/删除/更新日历中的事件,以便Outlook能够解决这个问题?如果我必须跟踪,现在我必须在我的应用程序中添加一层持久性和状态感知。
如果我保持跟踪,我在其他SO问题中注意到Outlook对ORGANIZER
属性真正挑剔......是否必须是电子邮件地址?一个mailto:
链接或只是一个地址?
我在绳子尽头。如果它回答有关实际构建生成正确日历订阅的网站的问题,我愿意阅读文档。除了strange conversion "algorithm"之外,我在MSDN上找不到任何内容。而且,就我所知,它没用。
<小时/> 为了清楚起见,我可以为任何用户生成一个基本的ICS文件,并手动在Outlook中启动它。我根本无法使用任何网络链接。
<小时/> 这些其他日历RFC是否可以发挥作用:iTIP和iMIP?
答案 0 :(得分:1)
我是否必须设置METHOD(RFC2445 4.7.2方法)?我甚至找不到这个属性或它接受的值的正确描述(它是客户端特定的吗?)。
WebDAV的日历扩展(CalDAV
本文档定义了Web分布式创作和扩展 版本控制(WebDAV)协议,用于指定标准访问方式, 管理和共享日历和日程安排信息 iCalendar格式。本文档定义了“日历访问” CalDAV的特色。
RFC 2445废弃了RFC 2445,因此您可能对differences between 5545 and 2445感兴趣,以便您可以尝试适应两者的交集。方法(RFC2445 4.7.2方法)?
我在绳子尽头。如果它回答有关实际构建生成正确日历订阅的网站的问题,我愿意阅读文档。
所有这些标准都由CalConnect维护,discussion lists具有您可能会使用的{{3}}。
抱歉,我没有更多的用处,因为我对Outlook的个人实践经验很少,但有很多人参与了CalConnect,他们知道所有的互操作细节。
答案 1 :(得分:0)
我还没有找到任何适当的文档,但我发现了一些Outlook的行为。关于“互联网日历订阅”的网络/ ics要求
http://
地址.ics
您可以在Outlook中自己尝试这些打开日历|来自互联网。您可能仍希望使用ActionLink
/ webcal链接,以便浏览器提示您启动可以处理请求的应用程序。
至于控制器/动作要求的其余部分......
FileResult
类型的控制器操作<小时/> *您可能需要明确允许该路由匿名。在我的系统中,我必须使用带有
<location>
的{{1}}标记来绕过我的表单身份验证。如果您确实需要安全性,请查看Google的功能。他们创建一个包含每个用户/日历的GUID令牌的URL,并要求您保护它。