2011-10-28 9 views
9

他のデバイスと同期できるiCalカレンダーを.NETで作成しようとしています。私はデータオブジェクトからiCalイベントを生成するためにDDay.iCalを使用していましたが、これまでのところすべて正常に動作しています。 Outlookから、私はICSファイルが生成されたURLにポイントすることによって(がインターネットからカレンダー » を追加)カレンダーを購読している:イベントが正常にカレンダーにインポートされ.NETの双方向更新可能なiCalファイル

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 
+0

こんにちはDavid。 iPhoneやその他のモバイルデバイスと同期させるためのカレンダーが含まれている.NETアプリケーション用のCalDAVサーバーを作成する必要があります。あなたが私をある方向に向けることができるかどうか尋ねるでしょうか?あるいは、私たちは一緒に何かをすることができますか? – BennoDual

+0

@ t.kehl:CalDAVの実装全体を構築したことはありません。私は最良の選択肢は、Exchangeサーバー側をインストールし、それとモバイルデバイスを同期させ、アプリケーションを使用してExchangeに物事をプッシュすることだと考えています。 (私はどちらかというと、私自身もそれに着手していませんでしたので、私は実際に何の指針も持っていません) –

答えて

0

をダミーの電子メールアドレスであっても、METHODをPUBLISHからREQUESTに変更し、VEVENTブロックにORGANIZERエントリを追加することで、作業を開始できるはずです。詳細については

RFC 2446

+0

ありがとう、しかし私はまだ問題があります。カレンダークライアントに変更を許可することを認識させたとしても、変更があったときにどのように通知するのですか?クライアントは 'URL'プロパティにリクエストを送信するはずですか? –

+0

私はあなたのアプリケーションに直接対話的な応答を得るつもりはないと思います。私はそれがかなり重要なセキュリティホールと見なされると思う。ただし、よく知られた電子メールアドレスをオーガナイザとして設定し、この電子メールアドレスを監視するアプリケーションを作成すると、招待リクエストを受け入れるかキャンセルするユーザが生成した応答を受信し、内部カレンダーをそれらの反応。 –

+0

これは私の問題の一部です。オーガナイザを指定するときに、オーガナイザとしてOutlookに正しく​​表示されても、ユーザーが「同意する」をクリックしたときにそのアドレスにはまだ応答がありません。しかし、私はそれが実際に私が望んでいるコースからちょっと離れていると思う:カレンダーが双方向で同期されるいくつかのマルチクライアントソリューションがある。なぜ私はできないはずなのか分かりません。セキュリティは明らかに私が心配しなければならないものです。 iCal形式*の範囲内で*できないことだけですか?その場合、私の質問は、私が使っているカレンダークライアントと同期することができる –

1

私の理解では、あなたがのCalDAVサーバ(http://tools.ietf.org/html/rfc4791)上のカレンダーをホストする必要があるということです参照してください。単にファイル(.ics)を公開することは、カレンダーエンジンでカレンダーをホストすることとは異なります。

+0

私はその方向でも見てきました。 .NET CalDAVサーバーについて知っていますか?私はほとんどがMacのものといくつかのPHPとPythonのセットアップを発見した。さもなければ、私はおそらくiCalを落とし、Exchangeをメッセージングレイヤーとして使用しようとします。 –

+0

私は.NET CalDAVサーバーを認識していません。私はあなたが[this](http://caldav.calconnect.org/implementations/servers.html)をすでに見たと確信しています。あなたはその問題を解決することができますか:ホストされたサーバー(Googleと言う)を想定し、CalDAVクライアントAPIコールを介してホストされたカレンダーを作成しますか? – fmr

+0

私の賞金は切れるつもりだった。あなたはそれを持っているかもしれません。私はホストされたサーバーを想定しているとは思えませんが、あなたのリストからオープンソースのJavaのポートの1つを書いてみるかもしれません。どちらかというと、Exchangeをメッセージングレイヤーとして使用しています...私はむしろ自分のものをホストしたいと思っています... –

1

まったく同じ問題があり、私はdavmailサーバーをインストールして解決し、PHPでカレンダーイベントを投稿しました。 CURLのようなもので比較的使いやすいhttp基本認証で設定することができます。 Davmailにはさまざまなデバイス用の素晴らしいドキュメントと設定ガイドがあります

本当に双方向にするには、ユーザーのクレデンシャル情報を保存してcrontabなどで要求するだけです。

+0

ありがとうございます、 –

関連する問題