2017-10-13 168 views
1

我正在创建一个管理远程MS Office文档的解决方案。我使用由IT Hit WebDAV System(www.webdavsystem.com)制作的库作为原型。实际上它的表现相当不错,但我无法使用办公室的URI(基于Microsoft的Office URI Schemes)以只读模式打开文档。打开WebDAV文档在MS Office中以IT只读方式打开WebDAV服务器

我想以只读模式打开文档,因此其他人可以在同一时间对其进行编辑。如可在B-3中看到的那样。提到文件的URI方案语法部分,有三个可用的命令:

  • OFE - 开放编辑
  • OFV - 打开视图
  • NFT - 新的模板

似乎无论使用哪个服务器,该服务器总是以“ofe”命令的形式发挥作用。其实,输入“无论”也是有效的,它可以是字面上的一切。使用微软Word例如,我在下面后要求顺序:

OPTIONS => HEAD => OPTIONS => OPTIONS => LOCK => GET => PROPFIND => OPTIONS 

正如我在编辑模式下打开文档正确理解,成功锁定尝试的结果。这告诉我,在此之前的某个地方,MS WORD应该请求获得许可,但我分析了以前的请求并且无法找到任何相关数据。
这也不是我的环境问题。我用SharePoint检查过,它没问题。这就是为什么我会责怪服务器。

正如我在this问题读的那句话(下同),

最WebDAV客户端忽略了这一点,并假装整个服务器或者是读写或只读

我开始想知道。也许是这样的?也许库跳过并将每个文件视为读写?如果是,我该如何检查它是否可以确定?

我已经选中this主题。作者提到,他在OPTIONS请求中有Office URI命令,但链接不再有效。在MS Office 2016发送的请求中,我无法在任何地方找到它。它应该在哪里?哪里?

最后但并非最不重要的,我发现this话题。这似乎确实是我的问题,但它没有提到解决方案,或者至少在我的情况下有效。

我会很感激任何帮助。

回答

0

我们最近重新测试了使用最新的MS Office 2016 for Windows和Mac OS X并安装了所有更新的v和o选项。这里是我们发现的:

  • 在Windows上,该选项被忽略。不管此参数如何, MS Office以读写方式打开。
  • 在Mac OS上,此选项是必需的。 MS Office遵守此选项并根据ofe/ofe打开为 只读或读写。

根据我们的经验,没有可靠的方式以只读方式打开文档。在SharePoint Online(SPS 2016)中,也无法在桌面版MS Office中以只读方式打开文档。

一种解决方法可能是在IFileAsync中引发DavException。在保存文件时执行WriteAsync()方法。请注意,MS Office将忽略正在返回的消息文本,只会显示一个通用错误。

另一个解决方法是在IMsItemAsync中将文档标记为只读。 GetFileAttributesAsync()方法执行:

public async Task<FileAttributes> GetFileAttributesAsync() 
    { 
     return fileSystemInfo.Attributes | FileAttributes.ReadOnly; 
    } 

MS Office的将显示为黄色丝带“UPLOAD FAILED该文件已被锁定,由另一用户编辑”。