簡體   English   中英

.NET中的雙向可更新iCal文件

[英]Two-way updatable iCal files in .NET

我一直在嘗試在.NET中創建一個可以與其他設備同步的iCal日歷。 我一直在使用DDay.iCal從我的數據對象生成iCal事件,到目前為止一切正常。 從Outlook,我通過指向生成ics文件的URL訂閱了日歷( 添加日歷 » 來自Internet ):

Response.Clear();
Response.ContentType = "text/calendar";
Response.AddHeader("Content-Disposition", "inline; filename=\"Calendar.ics\"");
Response.Write( GenerateCalendar() );
Response.End();

事件被正確導入日歷; 但是,在我嘗試過的任何日歷軟件中,我都無法更新或刪除事件。 這並不是說收到刪除通知時出錯; 只是所有客戶都將日歷識別為只讀。

我的想法是,通過提供URL,我可以讓Outlook或Google日歷聯系我的服務器以刪除事件。 我是否認為這應該是錯誤的,或者我錯過了適當的屬性? (或者,根據上面的代碼,我是錯誤地導入日歷,還是錯誤地分發日歷?)

上面由GenerateCalendar的日歷可能如下所示:

BEGIN:VCALENDAR
VERSION:2.0
METHOD:PUBLISH
PRODID:-//My Company//My App//EN
URL:http://localhost/test/
X-WR-CALNAME:Test
BEGIN:VEVENT
DTEND:20110831T100100
DTSTAMP:20111028T091109
DTSTART:20110831T090100
SEQUENCE:0
SUMMARY:Test
UID:1
URL:http://localhost/test/?id=1
END:VEVENT
END:VCALENDAR

我的理解是您需要在CalDAV服務器上托管您的日歷( http://tools.ietf.org/html/rfc4791 )。 簡單地發布文件(.ics)與在日歷引擎上托管日歷不同。

有完全相同的問題,我解決了它通過安裝davmail服務器和發布日歷事件通過它與PHP。 它可以使用http基本身份驗證進行配置,這對於像CURL這樣的東西來說相對容易使用。 Davmail為各種設備提供了很好的文檔和設置指南

為了使它真正雙向,你可以存儲用戶的憑證信息,並使用crontab或類似的東西發出請求。

我認為您應該能夠通過將METHOD從PUBLISH更改為REQUEST並將ORGANIZER條目添加到VEVENT塊來使其工作,即使它是虛擬電子郵件地址。

有關更多詳細信息,請參閱RFC 2446

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM