3

我生成了一个 ICAL 日历并将其托管在 Amazon S3 上:

创建新日历并选择从文件导入并使用此 ICAL 文件时,所有事件都会被导入,但如果我添加 Internet 日历,则会添加日历,但不会显示事件,并且日历名称相同。

这是 VCALENDAR 数据:

BEGIN:VCALENDAR
CALSCALE:GREGORIAN
METHOD:PUBLISH
PRODID:-//github.com/rianjs/ical.net//NONSGML ical.net 4.0//EN
VERSION:2.0
X-ORIGINAL-URL:http://static.exyll.net/exports/chauffeur-ts.ics
X-WR-CALNAME:VG Hoogvliet - chauffeur-ts
X-WR-TIMEZONE:Europe/Amsterdam

我尝试了格式化 VEVENT 结构的不同方法:

UTC 时间戳

BEGIN:VEVENT
DTEND:20190114T080000Z
DTSTAMP:20190408T165745Z
DTSTART:20190114T060000Z
LOCATION:Rietbroek\, Hoogvliet
SEQUENCE:0
SUMMARY:Onderbezetting - chauffeur-ts (07:00 - 2u)
UID:bed8e415ca443a72a67ea9dc0a6a9bc5
END:VEVENT

本地时间戳 + TZID

BEGIN:VEVENT
DTEND;TZID=Europe/Amsterdam:20190114T080000
DTSTAMP:20190408T174500Z
DTSTART;TZID=Europe/Amsterdam:20190114T060000
LOCATION:Rietbroek\, Hoogvliet
SEQUENCE:0
SUMMARY:Onderbezetting - chauffeur-ts (06:00 - 2u)
UID:bed8e415ca443a72a67ea9dc0a6a9bc5
END:VEVENT

没有位置但有类别

BEGIN:VEVENT
CATEGORIES:Onderbezetting
DTEND:20181206T080000Z
DTSTAMP:20190409T081553Z
DTSTART:20181206T050000Z
SEQUENCE:0
SUMMARY:Onderbezetting - bevelvoerder (06:00 - 3u)
UID:638682f0542136a1884d6bdd7136b4c0
END:VEVENT

HTTP 标头:

HTTP/1.1 200 OK
x-amz-id-2: VMuHAsEtbQjjqiceomqVth61ycP8uuS7d73G7eI22NEv6EGDt/hAAl4EGA1nHJ4FGNopm+wahyw=
x-amz-request-id: DDD6997ACB409B12
Date: Mon, 08 Apr 2019 17:29:35 GMT
Cache-Control: public
Content-Disposition: attachment; filename="calendar.ics"
Expires: Mon, 01 Apr 2019 00:00:00 GMT
Last-Modified: Mon, 08 Apr 2019 16:57:48 GMT
ETag: "a3e47ff07b8a9b17f91a4a7e4afb5325"
Content-Type: text/calendar
Content-Length: 2883
Server: AmazonS3

我尝试过使用不同的 http 缓存标头,不使用内容处置标头,使用不带 Z 的时间戳,未指定 CALSCALE、METHOD、X-ORIGINAL-URL 或 X-WR-TIMEZONE,并且我尝试不使用 UID 或每次生成文件时都会生成一个新的 UID。

我已经达到了寻找可能出错的极限,但仍然存在问题。

谁知道为什么这个 URL 可以添加到 Google 日历中,但从不显示它的事件或它的名称?

4

2 回答 2

2

该文件包含一个 UTF8 BOM,这导致以下验证器无法加载。我正在使用 c# 并且不得不使用new StreamWriter(s, new UTF8Encoding(false))而不是new StreamWriter(s, Encoding.UTF8)

验证器声明需要该ORGANIZER属性,但这是不正确的。

于 2019-04-15T13:54:10.167 回答
0

看起来你在 icalendar 流的尽头有一些垃圾

BEGIN:VEVENT
CATEGORIES:Onderbezetting
DTEND;TZID=Europe/Amsterdam:20190412T190000
DTSTAMP:20190409T080434Z
DTSTART;TZID=Europe/Amsterdam:20190412T150000
SEQUENCE:0
SUMMARY:Onderbezetting - chauffeur-ts (15:00 - 4u)
UID:241e4276f83a3b1d91e6353059b9ee89
END:VEVENT
END:VCALENDAR
76f83a3b1d91e6353059b9ee89
END:VEVENT
END:VCALENDAR

(你有两个 END:VCALENDAR 中间有东西)。

于 2019-04-11T06:57:55.323 回答