DocLib项目在编辑后保持签出状态

时间:2014-07-16 14:41:30

标签: sharepoint sharepoint-2010 ms-word checkout splist

以下是我的问题的步骤:

  1. 转到自定义DocumentLibrary(自定义字段,使用自定义FieldIterator自定义ListForm)
  2. 选择一个现有的生产Word文档(* .doc)
  3. 点击"编辑文档"为了在客户端Office应用程序中进行编辑
  4. 编辑文档并单击“保存”,查看上传更改的进度条...
  5. 关闭文档,我之前打开的视图将被刷新。
  6. 问题:

    1. 项目由管理员签出。无论您使用哪个用户进行编辑,您都会在Administrator下看到签出的文档。
    2. 对文档的更改会逐渐应用。
    3. 我的调查结果:

      我已经通过Fiddler解雇了,并从CellStorage.svc中发现了这个CellRequestFail错误:

      <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
          <s:Body>
              <ResponseVersion Version="2" MinorVersion="0" xmlns="http://schemas.microsoft.com/sharepoint/soap/"/>
              <ResponseCollection WebUrl="http://kbstg.rt.ru" xmlns="http://schemas.microsoft.com/sharepoint/soap/">
                  <Response Url="http://siteurl/Lists/DocumentationListInstance/02_D-link_DSL2640_UEBRUC2E_V2.doc" RequestToken="1" HealthScore="1">
                      <SubResponse SubRequestToken="1" ErrorCode="Success" HResult="0">
                          <SubResponseData/>
                      </SubResponse>
                      <SubResponse SubRequestToken="2" ErrorCode="CellRequestFail" HResult="2147500037">
                          <SubResponseData Etag="&quot;{BB1B8453-5F6F-4D05-8210-E42DB21A6711},12&quot;" CoalesceHResult="0" ContainsHotboxData="False" HaveOnlyDemotionChanges="False">DAALAJ3PKfM5lAabFgMCAAAOAgYAAwUBbgIgAL+u/no9AyhInDE5d6/lgklaAggAZgIAADcBBwGLAQ==</SubResponseData>
                      </SubResponse>
                  </Response>
              </ResponseCollection>
          </s:Body>
      </s:Envelope>
      

      ULS日志给了我:

      ttidLogCellStg      Sub-request rtQueryChanges failed with error ICsiError: csierrBlobHeap_ClockReversed (0x266)
      

      如果我上传任何新文件,那么一切都会好的。即使我下载了一个有问题的文档并在创建新项目后上传它,那么一切都会好起来的。

      更新
      我对一个文件做了一些测试,所以我可以说文件属性中的ETag等于Subagquest中的ETag。

1 个答案:

答案 0 :(得分:0)

这是MS-FSSHTTPS协议中的问题。该协议负责Office客户端(Word)和服务器(SharePoint)之间的Office文档的文件同步。它应该减少客户端和服务器之间传输的数据量。 DOCX文档获得了更好的结果,但它也适用于DOC文件。根据议定书documentation

  

Etag:一个字符串,指定要更新的唯一字符串值   每次更改文件内容。唯一的字符串得到   无论哪个协议客户端更新文件,都会更新   共同授权文件中的内容。任何时候协议客户端   指定单元子请求中的Etag属性,服务器必须   检查以确保客户端发送的Etag与Etag匹配   在服务器上为该文件指定。如果Etag不匹配   客户端指定的版本与存储的版本之间   服务器,协议服务器必须发送错误代码值设置为   单元子响应消息中的“CellRequestFail”。协议   服务器按[RFC2616]中的规定处理此值。

似乎您的文档中的ETAG元数据信息已损坏。