MS Office使用WebDAV只读打开文档

3
我们实现了自己的WebDAV服务器。一些用户在使用Office(Word,Excel)打开文档时只能以只读方式查看。在出现问题的计算机上,查询如下:
  1. OPTIONS http://pastie.org/10957339,响应(经过一系列NTLM身份验证后):http://pastie.org/10957337(与未出现问题的相同)
  2. GET
  3. HEAD
  4. HEAD
正常的查询(在健康的计算机上)是:OPTIONS,HEAD,LOCK,GET... 因此,Word不会尝试锁定文档,而是以只读方式打开它。
我们已经尝试过以下方法:
  1. 检查WebDAV链接,它是正确的(如OPTIONS查询中所示)
  2. 检查OPTIONS响应是否包含头部MS-Author-Via: DAV
  3. 检查服务器是否崩溃。所有响应都是OK的。
  4. 将注册表键HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\Internet\OpenDocumentsReadWriteWhileBrowsing设置为1,如此处所述。
  5. 将注册表键HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\BasicAuthLevel设置为2,将HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Common\Internet\BasicAuthLevel设置为2,如此处所述。
  6. https://www.ajaxbrowser.com打开文档-所有文档都可以读写。
  7. 清除IE中的cookies,在IE中登录(以提供MS Word的cookies)
  8. 尝试查找问题计算机和正常计算机之间的差异。问题出现在不同版本的Office、不同版本的Windows(7、8、10)上,所有计算机都通过代理连接(包括健康的计算机)。
  9. 清除注册表键HKEY_CURRENT_USER\Software\Microsoft\Office\\Common\Internet\Server Cache,如此处所述。
有什么线索吗?为什么Office不尝试锁定文档?

@DirkVollmar 在第一个OPTIONS请求之后是GET。 GET没问题,但它已经意味着文档只读打开,因为没有执行LOCK。我将OPTIONS响应与工作的进行了比较,没有发现任何差异。这是工作应用程序(在我的开发PC上)的响应,您可以将其与客户端进行比较,它们是相同的。 - Pavel
OPTIONS 请求的完整响应是什么?您能否还发送 PROPFIND 请求的 HTTP 请求和响应? - Evert
@Evert,如帖子中所述,响应是这个。如果我不搞错的话,PROFIND通常会在保存之前发生。我们不会保存文档,因为它是只读的。无论如何,明天我会看看是否存在任何PROFIND。 - Pavel
1
很不幸,过去的那些东西已经不再起作用了。但是(这也是不幸的),你的问题和@evert的补充是我能找到的唯一全面的Word与WebDAV通信要求列表。非常感谢您完美编辑的问题! - Michael
2个回答

4

你至少缺少DAV头。在OPTIONS响应中包含它:

DAV: 1,2

有趣。文档,类别“2”表示允许LOCK方法。看起来很有希望,我会尝试一下... - Pavel
@Pavel 不要阅读微软文档。阅读标准 - Evert
我同意微软文档在很大程度上都不是很有帮助或实用。但由于微软经常添加额外的怪癖(例如我曾经错过了“_MS-Author-Via_”标头),而且这与让Word配合起来有关,我们确实无法避免使用它们。 - Michael

0
问题出在 MS Office 和代理服务器的交互上。当我们启动 Fiddler(而不是 WireShark),它会创建一个本地代理来捕获流量,这样 WebDAV 就能正常工作了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接