我的任务是为我们组织的成员创建ICAL会议电话会议。我在ASP.NET中创建了一个处理程序,它循环遍历我们的数据库,从数据库中获取调用数据,并根据我读过的ICAL格式创建对我有效的输出,以及我见过的示例/拆卸。
Outlook 2007读取结果输出并显示日历,没问题(screenshot here显示它的呈现方式)。
30个盒子也没有问题。 (see test here)。但是当我尝试将相同的输出加载到Google日历中时,我收到消息“我们无法在请求的网址上解析日历”:
We could not parse the calendar at the url requested http://i51.tinypic.com/21mgoba.png
导致Google拒绝该输出的输出有什么问题?您可以在此网址上看到我正在测试的临时数据: http://www.joshuacarmody.com/temp/icaltest.ics。这是我的.ASHX文件输出的快照,除了电话号码和密码已经消毒之外没有改变。
使用其他信息进行编辑:
我刚刚尝试了以下
我仍然收到错误消息。所以我猜这个问题不是我的VEVENT数据,而是关于该文件的其他内容。也许我的VCALENDAR定义出了问题?
答案 0 :(得分:4)
http://severinghaus.org/projects/icv/?url=http%3A%2F%2Fwww.joshuacarmody.com%2Ftemp%2Ficaltest.ics
在我的测试中谷歌有点麻烦/严谨/迂腐 - 一旦你使用验证器和谷歌它应该在大多数地方工作。
答案 1 :(得分:4)
经过大量的反复试验,并将我的输出与Google的比较,我得到了它的工作。我的ICS文件存在一些问题:
答案 2 :(得分:1)
在BEGIN之前我没有一个,但有三个有趣的角色:VCALENDAR,十进制代码239,187,191。
我发现他们感谢上面的severinghaus.org链接,谢谢!
事实证明它们是UTF-8中名为BOM的前缀,您可以在此处阅读:http://en.wikipedia.org/wiki/UTF-8#Byte_order_mark
谷歌没有处理这个问题,但是在从文件中删除这三个字符并上传到服务器之后,我能够在Google日历中(从URL)暂停到该日历。
我希望这可以帮助将来通过此页面的人...
答案 3 :(得分:0)
我遇到了类似的问题,直到我意识到在Notepad ++中打开生成的.ics文件并不是UTF-8。我使用的方法将我的字符串转换为字节数组,但是没有使用编码器,所以无论我使用什么内容标头,都不会使用UTF-8生成文件。这个简单的解决方案解决了UTF-8的问题,Google现在对我的Feed感到满意:
var utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(myString);
myString= utf8.GetString(utfBytes, 0, utfBytes.Length);