我已经在C#中为我们销售的产品定制了一个CalDav服务器,一切都很好用。只有一件事困扰着我,但在标准中没有任何地方我能为我的烦恼找到解决方案。
当客户端连接到我们的CalDav服务器并创建新的Event
时,客户端会告诉服务器{1}}对于提交的事件是什么。我们的服务器将UID
保存在它自己的数据库中(作为一个不同的模型),该对象从我们的服务器获得Event
。
我向客户回应该对象已保存并且它有一个新位置,这使客户端检索该对象的最新版本。
但我希望将客户端发送的事件的ID
更改为我们用来查找对象的UID
。
有没有办法告诉客户"我为您存储了对象,但请检索此版本,更改ID
并转储旧版本?"
因为它现在的工作方式是客户端确实在发送给我们之后检索新创建的事件(使用UID
请求),但由于新的PUT
{{1客户认为它是一个新对象。
我已经尝试过向客户说明他们尝试发布到UID
的商品实际上应该发布到Event
。
这导致向右侧网址发布帖子,但错误的/mycaldav/SOME-WEIRD-UID-HERE.ics
。
答案 0 :(得分:3)
这很简单:在CalDAV / CardDAV中,UID由客户端分配(对于PUT也分配URL)。 您不能只是更改它,因为客户端可能还需要“其”ID来关联客户端上的内容(例如附件,调度请求,相关联系人等)。
摘要:您需要将客户端分配的UID(和URL)映射到服务器上的内部ID。它不方便,但它的工作方式。也许只是将它存储在用于存储客户端的所有X属性的相同结构中?