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 的“打开文件”对话框中,我已经从命令行启动 Word,并带有该文件的 URL,我什至尝试了一些ms-word:ofe|u|http://server/file.docx
来自网页的 MS Office 协议处理程序 ()。
每次我都是只读的。有关如何让 MS Office 正确使用此 WebDAV 的任何建议?我已经将同一个 MS Office 与另一个 WebDAV 实现(Atlassian Confluence)一起使用,所以我希望它只是需要一些 Office 配置或命令行开关。
我没有足够的代表发表评论,所以我正在写作为答案。
既然您说该设置适用于 Atlassian 服务器并且不适用于您的服务器,那么我要调试该问题的方法是跟踪 HTTP 通信并查看请求/响应数据和标头中的差异。
为此,我通常使用smart sniff或wireshark。
如果这些系统中的任何一个使用 SSL,这将无济于事。
您需要打开 WebDAV 设置中的“源”选项,以使 MS Office 和许多其他工具与 WebDAV 一起正常工作。