Iis

帶有 WebDAV 的 IIS8.5 只提供只讀文件

  • December 7, 2016

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 配置或命令行開關。

您需要打開 WebDAV 設置中的“源”選項,以使 MS Office 和許多其他工具與 WebDAV 一起正常工作。

設置

我沒有足夠的代表發表評論,所以我正在寫作為答案。

既然您說該設置適用於 Atlassian 伺服器並且不適用於您的伺服器,那麼我要調試該問題的方法是跟踪 HTTP 通信並查看請求/響應數據和標頭中的差異。

為此,我通常使用smart sniffwireshark

如果這些系統中的任何一個使用 SSL,這將無濟於事。

引用自:https://serverfault.com/questions/819199