3

我正在创建一个用于管理远程 MS Office 文档的解决方案。我使用 IT Hit WebDAV System (www.webdavsystem.com) 制作的库作为原型。它实际上做得很好,除了我无法使用办公室的 URI(基于 Microsoft 的Office URI 方案)以只读模式打开文档。

我想以只读模式打开文档,以便其他人可以同时对其进行编辑。正如在B-3中所见。URI Scheme Syntax部分提到的文档,有三个可用的命令:

  • ofe - 开放编辑
  • ofv - 打开查看
  • nft - 来自模板的新功能

似乎服务器总是充当“ofe”命令,无论使用哪一个。实际上,输入“whatever”也可以,它实际上可以是一切。以 MS Word 为例,我在下面发布请求顺序:

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

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

当我在这个问题中读到那句话(下)时,

大多数 WebDAV 客户端忽略这一点,并假装整个服务器是读写的或只读的

我开始怀疑。也许是这样?也许库会跳过它并将每个文件都视为读写?如果是,我该如何检查才能确定?

我也检查过这个话题。作者提到,他的 OPTIONS 请求中有 Office URI 命令,但链接不再有效。在 MS Office 2016 发送的请求中,我在任何地方都找不到。它应该在任何地方吗?在哪里?

最后但同样重要的是,我发现了这个话题。这似乎正是我的问题,但它没有提到解决方案,或者至少没有任何对我有用的东西。

我将不胜感激。

4

1 回答 1

2

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

  • 在 Windows 上,此选项将被忽略。无论此参数如何,MS Office 都会以读写方式打开。
  • 在 Mac OS 上,此选项是必需的。MS Office 尊重此选项,并根据 ofv/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 将显示一个黄色丝带“上传失败此文件已锁定以供其他用户编辑”。

于 2017-10-21T04:20:32.733 回答