带有 WebDAV 的 IIS8.5 仅提供只读文件

带有 WebDAV 的 IIS8.5 仅提供只读文件

Windows Server 2012 R2,已安装并启用 IIS 8.5 和 WebDAV 功能。看起来所有基本功能均正常运行:

$curl --ntlm -u username:password -i -X OPTIONS http://server/file.docx

HTTP/1.1 200 OK
Allow: OPTIONS, TRACE, GET, HEAD, POST, COPY, PROPFIND, DELETE, MOVE, PROPPATCH, PUT, LOCK, UNLOCK
Server: Microsoft-IIS/8.5
Public: OPTIONS, TRACE, GET, HEAD, POST, PROPFIND, PROPPATCH, MKCOL, PUT, DELETE, COPY, MOVE, LOCK, UNLOCK
DAV: 1,2,3
MS-Author-Via: DAV
Persistent-Auth: true
X-Powered-By: ASP.NET
Date: Wed, 07 Dec 2016 05:10:15 GMT
Content-Length: 0

还:

$curl --request PROPFIND --ntlm -u username:password  --header "Content-Type: text/xml" --header "Brief:t" --data "<D:propfind xmlns:D='DAV:'><D:prop><D:displayname/><D:getcontentlength/><D:getlastmodified/></D:prop></D:propfind>" http://server/file.docx

<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:D="DAV:"><D:response>
<D:href>http://server/file.docx</D:href>
<D:propstat><D:status>HTTP/1.1 200 OK</D:status>
<D:prop>
<D:getlastmodified>Wed, 07 Dec 2016 04:26:19 GMT</D:getlastmodified>
<D:displayname>file.docx</D:displayname>
<D:getcontentlength>16265</D:getcontentlength>
</D:prop>
</D:propstat>
</D:response>
</D:multistatus>

更新:还发现 curl 命令可以从服务器上删除文件并上传文件,并且它们都有效:

$curl --ntlm -u username:password -X DELETE http://server/file.docx
$curl --ntlm -u username:password -T file.docx http://server/

根据所有curl测试,基本的 WebDAV 似乎可以正常工作,但是无论我如何尝试在 Microsoft Word 中打开此文件/URL,它都只能以只读方式打开。

我尝试将 URL 粘贴到 MS Word 的“打开文件”对话框中,我从命令行使用此文件的 URL 启动了 Word,我甚至尝试ms-word:ofe|u|http://server/file.docx从网页使用一些 MS Office 协议处理程序()。

每次我都只读。关于如何让 MS Office 正确使用此 WebDAV 有什么建议吗?我曾将同一个 MS Office 与另一个 WebDAV 实现(Atlassian Confluence)一起使用,所以我希望这只是一些 Office 配置或命令行开关所需。

答案1

我没有足够的代表来发表评论,所以我写答案。

由于您说该设置适用于 Atlassian 服务器但不能适用于您的服务器,因此我要做的就是跟踪 HTTP 通信并查看请求/响应数据和标头中有什么差异来调试该问题。

为此我通常使用智能嗅探或者wireshark

如果这两个系统都使用 SSL,这将无济于事。

答案2

您需要在 WebDAV 设置中打开“源”选项,以便 MS Office 和许多其他工具能够与 WebDAV 正确协作。

设置

相关内容