microsoft - 活动同步客户端同步消息,状态代码 4 ParseSyncKey AirSyncPermanentException

  显示原文与译文双语对照的内容
0 0

我目前正在编写一个活动同步客户端,我成功地完成了文件夹同步。 i sync的"便笺"文件,在我发送的协议中没有发现错误,这是我的日志中的部分:

文件夹同步 RequestBody:

<?xml version="1.0" encoding="utf-8"?>
<FolderSync xmlns="FolderHierarchy:">
 <SyncKey>0</SyncKey>
</FolderSync>

FolderSync ResponseBody:

<?xml version="1.0" encoding="utf-8"?>
<FolderSync xmlns="FolderHierarchy:">
 <Status>1</Status>
 <SyncKey>1</SyncKey>
 <Changes>
 <Count>12</Count>
 <Add>
 <ServerId>1</ServerId>
 <ParentId>0</ParentId>
 <DisplayName>Calendar</DisplayName>
 <Type>8</Type>
 </Add>
 <Add>
 <ServerId>2</ServerId>
 <ParentId>0</ParentId>
 <DisplayName>Contacts</DisplayName>
 <Type>9</Type>
 </Add>
 <Add>
 <ServerId>3</ServerId>
 <ParentId>0</ParentId>
 <DisplayName>Deleted Items</DisplayName>
 <Type>4</Type>
 </Add>
 <Add>
 <ServerId>4</ServerId>
 <ParentId>0</ParentId>
 <DisplayName>Drafts</DisplayName>
 <Type>3</Type>
 </Add>
 <Add>
 <ServerId>5</ServerId>
 <ParentId>0</ParentId>
 <DisplayName>Inbox</DisplayName>
 <Type>2</Type>
 </Add>
 <Add>
 <ServerId>6</ServerId>
 <ParentId>0</ParentId>
 <DisplayName>Journal</DisplayName>
 <Type>11</Type>
 </Add>
 <Add>
 <ServerId>7</ServerId>
 <ParentId>0</ParentId>
 <DisplayName>Junk E-Mail</DisplayName>
 <Type>12</Type>
 </Add>
 <Add>
 <ServerId>8</ServerId>
 <ParentId>0</ParentId>
 <DisplayName>Notes</DisplayName>
 <Type>10</Type>
 </Add>
 <Add>
 <ServerId>9</ServerId>
 <ParentId>0</ParentId>
 <DisplayName>Outbox</DisplayName>
 <Type>6</Type>
 </Add>
 <Add>
 <ServerId>10</ServerId>
 <ParentId>0</ParentId>
 <DisplayName>Sent Items</DisplayName>
 <Type>5</Type>
 </Add>
 <Add>
 <ServerId>11</ServerId>
 <ParentId>0</ParentId>
 <DisplayName>Tasks</DisplayName>
 <Type>7</Type>
 </Add>
 <Add>
 <ServerId>RI</ServerId>
 <ParentId>0</ParentId>
 <DisplayName>RecipientInfo</DisplayName>
 <Type>19</Type>
 </Add>
 </Changes>
</FolderSync>

我的同步 RequestBody:

<?xml version="1.0" encoding="utf-8"?>
<Sync xmlns="AirSync:">
 <Collections>
 <Collection>
 <SyncKey>0</SyncKey>
 <CollectionId>8</CollectionId>
 <DeletesAsMoves>1</DeletesAsMoves>
 <GetChanges/>
 </Collection>
 </Collections>
</Sync>

列出这里异常:

SyncCommand_OnExecute_Exception : 
Microsoft.Exchange.AirSync.AirSyncPermanentException
 at Microsoft.Exchange.AirSync.SyncCommand.ParseSyncKey(SyncCollection collection)
 at Microsoft.Exchange.AirSync.SyncCommand.SyncTheCollection(SyncCollection collection, Boolean createSubscription, Boolean tryNullSync)
 at Microsoft.Exchange.AirSync.SyncCommand.OnExecute()

并提供以下 ResponseBody:

<?xml version="1.0" encoding="utf-8"?>
<Sync xmlns="AirSync:">
 <Status>4</Status>
</Sync>

为什么在那里失败的任何想法? 这是文件夹的第一个同步,因此 SyncKey 应该是0.。

时间:原作者:

0 0

来自 http://msdn.microsoft.com/en-us/library/gg675447(v=exchg.80).aspx:

如果is元素存在且空值为 1,则返回状态元素( 节 2.2.3.162. 16 ) 值 4,当SyncKey元素值为 0时,返回( true ) 。 如果SyncKey元素不存在或者值为 0 ( 零),则不返回任何错误,或者将它的设置为 0 ( false ) 。

你的xml中存在和空。

你只能将GetChanges设置为 1,或者在任何产生的同步请求中将它空为空,而不是初始同步请求。

原作者:
...