2013-02-15 53 views
0

我试图让我的Windows Phone 8 MDM系统正常工作。目前设备注册并正确初始化SyncML请求。它也响应服务器初始响应中的查询,但我认为它不喜欢它中的某些内容。原因是它使用重试间隔来建立到服务器的连接,然后再不连接。WP8-客户端中的SyncML协议停止响应

当我手动启动连接然后它工作,但自动连接没有发生。奇怪的是,SyncML SessionID计数器在内部按指定的时间间隔增加,但设备甚至不尝试连接服务器。

这里是我的SyncML协议

客户端开始:

<SyncML xmlns="SYNCML:SYNCML1.2"> 
    <SyncHdr> 
    <VerDTD>1.2</VerDTD> 
    <VerProto>DM/1.2</VerProto> 
    <SessionID>E</SessionID> 
    <MsgID>1</MsgID> 
    <Target> 
     <LocURI>https://ssl.../enrollment/omadmservice.php</LocURI> 
    </Target> 
    <Source> 
     <LocURI>IMEI:35...64</LocURI> 
     <LocName>riho</LocName> 
    </Source> 
    <Cred> 
     <Meta> 
     <Format xmlns="syncml:metinf">b64</Format> 
     <Type xmlns="syncml:metinf">syncml:auth-md5</Type> 
     </Meta> 
     <Data>SoFh6khg4awLYXn2PQOOwQ==</Data> 
    </Cred> 
    </SyncHdr> 
    <SyncBody> 
    <Alert> 
     <CmdID>2</CmdID> 
     <Data>1201</Data> 
    </Alert> 
    <Replace> 
     <CmdID>3</CmdID> 
     <Item> 
     <Source> 
      <LocURI>./DevInfo/DevId</LocURI> 
     </Source> 
     <Data>IMEI:35...64</Data> 
     </Item> 
     ... 
    </Replace> 
    <Final/> 
    </SyncBody> 
</SyncML> 

服务器响应:

<SyncML xmlns="SYNCML:SYNCML1.2"> 
    <SyncHdr> 
     <VerDTD>1.2</VerDTD> 
     <VerProto>DM/1.2</VerProto> 
     <SessionID>E</SessionID> 
     <MsgID>1</MsgID> 
     <Target> 
      <LocURI>IMEI:35...64</LocURI> 
     </Target> 
     <Source> 
      <LocURI>https://ssl.../enrollment/omadmservice.php</LocURI> 
      <LocName>MDMServer</LocName> 
     </Source> 
     <Cred> 
      <Meta> 
      <Format xmlns="syncml:metinf">b64</Format> 
      <Type xmlns="syncml:metinf">syncml:auth-md5</Type> 
      </Meta> 
      <Data>ryJ+boSmdCoO8BzxXcYSxg==</Data> 
     </Cred> 
    </SyncHdr> 
    <SyncBody> 
     <Status> 
     <CmdID>1</CmdID> 
     <MsgRef>1</MsgRef> 
     <CmdRef>0</CmdRef> 
     <Cmd>SyncHdr</Cmd> 
     <Data>212</Data> 
     </Status> 
    <Status> 
     <MsgRef>1</MsgRef> 
     <CmdRef>2</CmdRef> 
     <CmdID>2</CmdID> 
     <Cmd>Alert</Cmd> 
     <Data>200</Data> 
    </Status> 
    <Status> 
     <CmdID>3</CmdID> 
     <MsgRef>1</MsgRef> 
     <CmdRef>3</CmdRef> 
     <Cmd>Replace</Cmd> 
     <Data>200</Data> 
    </Status> 
    <Get> 
     <CmdID>4</CmdID> 
     <Item> 
      <Target> 
       <LocURI>./Vendor/MSFT/Registry/HKLM/Software/Microsoft/DeviceEncryption/Enabled</LocURI> 
      </Target> 
     </Item> 
    </Get> 
    </SyncBody> 
</SyncML> 

客户端发送它的响应:

<SyncML xmlns="SYNCML:SYNCML1.2"> 
    <SyncHdr> 
    <VerDTD>1.2</VerDTD> 
    <VerProto>DM/1.2</VerProto> 
    <SessionID>E</SessionID> 
    <MsgID>2</MsgID> 
    <Target> 
     <LocURI>https://ssl.../enrollment/omadmservice.php</LocURI> 
    </Target> 
    <Source> 
     <LocURI>IMEI:35...64</LocURI> 
    </Source> 
    </SyncHdr> 
    <SyncBody> 
    <Status> 
     <CmdID>1</CmdID> 
     <MsgRef>1</MsgRef> 
     <CmdRef>0</CmdRef> 
     <Cmd>SyncHdr</Cmd> 
     <Chal> 
     <Meta> 
      <Format xmlns="syncml:metinf">b64</Format> 
      <Type xmlns="syncml:metinf">syncml:auth-md5</Type> 
      <NextNonce xmlns="syncml:metinf">kjjz6FyCYuYm9VUsSaHfKmj98GGfh9yeLvv8hlMNZak=</NextNonce> 
     </Meta> 
     </Chal> 
     <Data>212</Data> 
    </Status> 
    <Status> 
     <CmdID>2</CmdID> 
     <MsgRef>1</MsgRef> 
     <CmdRef>4</CmdRef> 
     <Cmd>Get</Cmd> 
     <Data>200</Data> 
    </Status> 
    <Results> 
     <CmdID>3</CmdID> 
     <MsgRef>1</MsgRef> 
     <CmdRef>4</CmdRef> 
     <Item> 
     <Source> 
      <LocURI>./Vendor/MSFT/Registry/HKLM/Software/Microsoft/DeviceEncryption/Enabled</LocURI> 
     </Source> 
     <Meta> 
      <Format xmlns="syncml:metinf">int</Format> 
     </Meta> 
     <Data>1</Data> 
     </Item> 
    </Results> 
    <Final/> 
    </SyncBody> 
</SyncML> 

和服务器存储DAT一个和下降连接。

任何人都可以在我的实现中发现一个错误?客户对服务器有什么期望?

+0

你是如何收到来自get命令的结果响应的?每个执行,添加,替换命令都适用于我,但Get命令除外。该设备未将结果报告给服务器。 – 2013-02-25 06:04:21

+0

尝试发送一些其他命令一起Get - 也许再次发送Chal或Cred。 – Riho 2013-02-25 09:21:39

+0

它仍然不报告投入中房和CHAL之后的任何结果。 无论如何,根据WP8 MDM文档,如果证书不足,Chal似乎会被发送。也许这就是你的客户端停止响应的原因? CHAL 指定的验证挑战。服务器或客户端可以发送一个挑战,其他如无凭证或凭证不足的原始请求消息中给出。 – 2013-02-26 01:32:17

回答

0

当我发现这个问题是不是在我的实现,但马车微软文档。在他们的“WP8企业管理协议1.2”中,他们修正了协议中的几个错别字和错误,现在连接按假定的方式工作。

+0

嗨Riho,能否请你指定区域的DOCO didnt包含正确的信息? – zaitsman 2013-04-19 01:25:58

+0

检查文档中的更改列表 – Riho 2013-04-19 12:57:37