我正在创建一个管理远程MS Office文档的解决方案。我使用IT Hit WebDAV System(www.webdavsystem.com)制作的库作为原型。它实际上做得很好,除了我无法使用办公室的URI以只读模式打开文档(基于Microsoft的Office URI Schemes)。
我想以只读模式打开文档,以便其他人可以同时编辑它。正如在 B-3中可以看到的那样。 URI Scheme Syntax 部分提到的文档,有三个命令可用:
似乎服务器总是作为“ofe”命令行事,无论使用哪一个。实际上,输入“无论什么”也有效,它可以是字面上的一切。以MS Word为例,我在下面发布请求订单:
OPTIONS => HEAD => OPTIONS => OPTIONS => LOCK => GET => PROPFIND => OPTIONS
正如我所理解的那样,成功的LOCK尝试会导致在编辑模式下打开文档。这告诉我,在那之前的某个地方,MS WORD应该请求允许这样做,但我分析了之前的请求,但无法找到任何相关数据。
这也不是我的环境问题。我用SharePoint检查了它,没关系。这就是为什么我会责怪服务器。
当我在this问题中阅读下面的句子时,
大多数WebDAV客户端忽略这一点并假装整个服务器是可读写或只读的
我开始怀疑。也许是这样的?也许库会跳过它并将每个文件视为读写?如果是,我该如何检查以确定?
我还检查了this主题。作者提到,他在OPTIONS请求中有Office URI命令,但链接不再有效。在MS Office 2016发送的请求中,我无法在任何地方找到它。应该在哪里?哪里?
最后,但并非最不重要的是,我找到了this主题。这似乎是我的问题,但它没有提到的解决方案,或者至少在我的案例中有任何作用。
我将不胜感激。
答案 0 :(得分:0)
我们最近重新测试了最新的MS Office 2016 for Windows和Mac OS X的v和ofe选项,并安装了所有更新。以下是我们发现的:
根据我们的经验,没有可靠的方法以只读方式打开文档。在SharePoint Online(SPS 2016)中,也没有选项可以在桌面上以只读方式打开文档版本的MS Office。
保存文件时,一种解决方法可能是在IFileAsync。WriteAsync()方法实现中抛出DavException。请注意,MS Office将忽略返回的消息文本,并且只显示一般错误。
另一种解决方法是在IMsItemAsync中将文档标记为只读。GetFileAttributesAsync()方法实现:
public async Task<FileAttributes> GetFileAttributesAsync()
{
return fileSystemInfo.Attributes | FileAttributes.ReadOnly;
}
MS Office将显示黄色功能区“UPLOAD FAILED此文件被锁定以供其他用户编辑”。