使用IT Hit WebDAV Server在MS Office中以只读方式打开WebDAV文档

时间:2017-10-13 09:29:44

标签: c# webdav ithit-webdav-server

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

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

  • ofe - 开放供编辑
  • ofv - open for view
  • nft - 来自模板的新内容

似乎服务器总是作为“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主题。这似乎是我的问题,但它没有提到的解决方案,或者至少在我的案例中有任何作用。

我将不胜感激。

1 个答案:

答案 0 :(得分:0)

我们最近重新测试了最新的MS Office 2016 for Windows和Mac OS X的v和ofe选项,并安装了所有更新。以下是我们发现的:

  • 在Windows上,此选项被忽略。无论这个参数如何 MS Office以读写方式打开。
  • 在Mac OS上,此选项是必需的。女士 Office尊重此选项并根据ofv / 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此文件被锁定以供其他用户编辑”。