2011-10-28 22 views
9

Tôi đã cố gắng tạo lịch iCal trong .NET có thể được đồng bộ hóa với các thiết bị khác. Tôi đã sử dụng DDay.iCal để tạo sự kiện iCal từ các đối tượng dữ liệu của mình và cho đến nay mọi thứ đều hoạt động tốt. Từ Outlook, tôi đã đăng ký lịch (Add Lịch » từ Internet) bằng cách chỉ đến một URL mà tạo ra một tập tin ics:Các tệp iCal có thể cập nhật hai chiều trong .NET

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

Các sự kiện được nhập khẩu vào đúng lịch; tuy nhiên, trong bất kỳ phần mềm Lịch nào mà tôi đã thử, tôi không thể cập nhật hoặc xóa các sự kiện. Nó không phải là có lỗi khi nhận được thông báo xóa; đơn giản là tất cả khách hàng đều nhận ra lịch là chỉ đọc.

Ý tưởng của tôi là bằng cách cung cấp URL, tôi có thể có lịch Outlook hoặc Google liên hệ với máy chủ của mình để xóa sự kiện. Toàn bộ ý tưởng của tôi về cách thức này được cho là làm việc sai, hay tôi chỉ bỏ lỡ những đặc tính thích hợp? (Hoặc, có lẽ, tôi nhập lịch không đúng cách, hoặc phân phối nó không đúng cách, theo các mã trên?)

Một lịch tạo ra bởi GenerateCalendar ở trên, có thể giống như thế này:

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

Xin chào David. Tôi cần tạo một CalDAV-Server cho ứng dụng .NET của tôi, trong đó có một Calendar để đồng bộ hóa nó với iPhone và các thiết bị di động khác. Tôi sẽ hỏi bạn nếu bạn có thể chỉ cho tôi theo một hướng? Hoặc có lẽ chúng ta có thể làm điều gì đó với nhau? – BennoDual

+0

@ t.kehl: Tôi chưa bao giờ bắt đầu xây dựng toàn bộ quá trình triển khai CalDAV. Tôi nghĩ rằng tùy chọn tốt nhất là cài đặt Exchange server-side và đồng bộ hóa thiết bị di động với ứng dụng đó và sử dụng ứng dụng của bạn để đẩy mọi thứ vào Exchange. (Tôi chưa bắt tay vào bản thân mình, vì vậy, tôi không thực sự có bất kỳ con trỏ nào) –

Trả lời

0

Tôi nghĩ bạn có thể làm cho nó hoạt động bằng cách thay đổi PHƯƠNG PHÁP từ PUBLISH thành YÊU CẦU và thêm mục nhập ORGANIZER vào khối VEVENT, ngay cả khi đó là địa chỉ email giả.

Để biết thêm chi tiết, xem RFC 2446

+0

Cảm ơn, nhưng tôi vẫn gặp sự cố. Và ngay cả khi tôi đã nhận được ứng dụng lịch để nhận ra rằng tôi muốn thay đổi được cho phép, làm thế nào để tôi nhận được thông báo khi thực hiện các thay đổi. Khách hàng có phải gửi yêu cầu đến thuộc tính 'URL' không? –

+0

Tôi không nghĩ rằng bạn sẽ nhận được phản hồi tương tác trực tiếp trở lại ứng dụng của bạn. Tôi nghi ngờ rằng có thể được coi là một lỗ hổng bảo mật khá đáng kể. Tuy nhiên, nếu bạn thiết lập địa chỉ email nổi tiếng làm người tổ chức và sau đó tạo ứng dụng theo dõi địa chỉ email này, bạn sẽ có thể nhận được phản hồi do người dùng chấp nhận hoặc hủy yêu cầu mời và cập nhật lịch nội bộ của bạn những phản ứng đó. –

+0

Đó cũng là một phần của vấn đề của tôi: Ngay cả khi chỉ định một người tổ chức, hiển thị đúng trong Outlook với tư cách người tổ chức, tôi vẫn không nhận được bất kỳ phản hồi nào về địa chỉ đó khi người dùng nhấp vào "Chấp nhận". Nhưng tôi nghĩ rằng đó là thực sự một chút tắt khóa học từ những gì tôi muốn: Có một số giải pháp đa khách hàng, nơi lịch được đồng bộ hai chiều. Tôi không thể hiểu tại sao tôi không thể; bảo mật là điều tôi sẽ phải lo lắng, rõ ràng. Chỉ là nó không thể * trong phạm vi định dạng iCal *? Trong trường hợp đó, tôi đoán câu hỏi của tôi là: tôi có thể sử dụng định dạng nào * để cung cấp lịch –

1

hiểu biết của tôi là bạn cần phải lưu trữ lịch của bạn trên máy chủ CalDAV (http://tools.ietf.org/html/rfc4791). Chỉ cần xuất bản một tệp (.ics) khác với lưu trữ lịch trên công cụ lịch.

+0

Cảm ơn. Tôi cũng đang nhìn theo hướng đó. Bạn có biết bất kỳ máy chủ .NET CalDAV nào không? Tôi đã chủ yếu tìm thấy mac-stuff và một số thiết lập php và python cho đến nay. Nếu không, tôi có thể sẽ thả iCal và tìm cách sử dụng Exchange làm lớp nhắn tin ... –

+0

Tôi không biết về bất kỳ máy chủ .NET CalDAV nào. Tôi chắc rằng bạn đã thấy [this] (http://caldav.calconnect.org/implementations/servers.html) rồi. Bạn có thể biến vấn đề trên đầu của nó: giả sử một máy chủ lưu trữ (nói Google) và cư trú một lịch được lưu trữ thông qua các cuộc gọi API khách hàng CalDAV? – fmr

+0

tiền thưởng của tôi sắp hết hạn; bạn có thể có nó. Tôi không nghĩ rằng tôi sẽ giả sử một máy chủ lưu trữ, nhưng tôi có thể nhìn vào viết một cổng của một trong những nguồn mở java từ danh sách của bạn. Hoặc là hoặc chỉ sử dụng Exchange như là một lớp nhắn tin ... Tôi muốn lưu trữ các công cụ của riêng tôi, dù sao ... –

1

Đã xảy ra sự cố tương tự và tôi đã giải quyết vấn đề này bằng cách cài đặt máy chủ davmail và đăng các sự kiện lịch thông qua php. Nó có thể được cấu hình với xác thực cơ bản http tương đối dễ sử dụng với những thứ như CURL. Davmail có tài liệu hướng dẫn thiết lập và hướng dẫn thiết lập tốt cho các thiết bị khác nhau

Để làm cho nó thực sự là 2 chiều, bạn có thể lưu trữ thông tin xác thực của người dùng và yêu cầu với crontab hoặc tương tự.

+0

Cảm ơn, tôi sẽ xem xét –

Các vấn đề liên quan