这是我的问题的步骤:
- 转到自定义 DocumentLibrary(自定义字段、自定义 ListForm 和自定义 FieldIterator)
- 选择现有的生产 Word 文档之一 (*.doc)
- 单击“编辑文档”以在客户端 Office 应用程序中进行编辑
- 编辑文档并单击保存,查看更改上传进度条...
- 关闭文档,我之前打开的视图将被刷新。
问题:
- 项目由管理员签出。无论您使用哪个用户进行编辑,您都将始终在管理员下看到已签出的文档。
- 对文档的更改会一次又一次地应用。
我的调查结果:
我通过 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=""{BB1B8453-5F6F-4D05-8210-E42DB21A6711},12"" 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 等于 SubRequest 中的 ETag。