Двусторонние обновляемые файлы iCal в .NET - PullRequest
9 голосов
/ 28 октября 2011

Я пытался создать календарь iCal в .NET, который можно синхронизировать с другими устройствами.Я использовал DDay.iCal для генерации событий iCal из моих объектов данных, и до сих пор все работает нормально.Из Outlook я подписался на календарь ( Добавить календарь" Из Интернета ), указав URL-адрес, который создает файл ics:

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

Ответы [ 4 ]

1 голос
/ 14 февраля 2012

Возникла точно такая же проблема, и я решил ее, установив сервер davmail и разместив события календаря через php.Он может быть настроен с базовой аутентификацией http, который относительно прост в использовании с такими вещами, как CURL.У Davmail есть хорошая документация и руководства по настройке для различных устройств

Чтобы сделать это по-настоящему двусторонним, вы можете просто сохранить учетные данные пользователей и сделать запрос с помощью crontab или чего-то подобного.

1 голос
/ 04 ноября 2011

Насколько я понимаю, вам нужно разместить свой календарь на сервере CalDAV (http://tools.ietf.org/html/rfc4791).). Простая публикация файла (.ics) отличается от размещения календаря на движке календаря.

0 голосов
/ 06 ноября 2011

Я знаю, "IP * Works! Internet Toolkit" имеет поддержку WebDav .

0 голосов
/ 31 октября 2011

Я думаю, что вы должны иметь возможность заставить его работать, изменив МЕТОД с PUBLISH на REQUEST и добавив запись ORGANIZER в блок VEVENT, даже если это фиктивный адрес электронной почты.

Для получения дополнительной информацииподробности см. RFC 2446

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...