跳到主要內容
AnyStorage
免費下載

WebDAV 疑難排解

Windows 無法連線 WebDAV:依症狀排查的清單

Windows 的 WebDAV 連線失敗可以照症狀查表:每一句錯誤文字對應原因與解法,從 WebClient 服務一路到沒人提的逾時與快取值。

一張症狀對照表加五個檢查步驟,涵蓋 WebClient、BasicAuthLevel,以及會讓正常伺服器看起來不通的快取與逾時。

Windows 無法連線 WebDAV,對應網路磁碟機 WebDAV,WebClient 服務

搜尋這個問題,第一頁多半是沒有結論的論壇貼文。原因之一是:「Windows 無法連線 WebDAV」不是一種故障,至少有九種,而且 Windows 會用同一句含糊的訊息回報其中好幾種。

所以照症狀查。先在表裡找到你看到的那句話,再去做它指向的檢查。前兩項能解決絕大多數情況,後面每一條都是「穿著相似訊息的另一個問題」。

Windows WebDAV 故障的症狀、原因與解法
Windows 顯示的內容原因解法
錯誤碼: 0x80070043WebClient 沒執行、HTTP 上的 Basic 驗證,或 URL 形式不對檢查 1 到 3,詳見 錯誤 0x80070043
發生系統錯誤 67。同樣三個原因,由 net use 回報net use 錯誤 67
您輸入的資料夾似乎無效多半是 WebClient 沒執行,或子路徑不對檢查 1 與 3
超過約 50MB 的檔案出現 0x800700DFFileSizeLimitInBytes 預設 50,000,000 位元組50MB 限制
發生系統錯誤 5。帳號或密碼錯誤,或對內容沒有權限檢查 4
發生系統錯誤 1244。伺服器沒啟用任何驗證方式,或登入類型不符伺服器端
發生系統錯誤 58。你用的名稱不在伺服器的主機繫結裡伺服器端
發生系統錯誤 59。站台或其應用程式集區已停止伺服器端
發生系統錯誤 224。URL 所在的區域不被重定向程式信任加入信任的網站
發生系統錯誤 1397。(相互驗證失敗)憑證驗證的對應磁碟機閒置後重新連線中斷後重新對應
掛得起來,但在 Mac 上寫入失敗Finder 需要宣告 LOCK 的 class 2 伺服器Mac 上 WebDAV 很慢

上面這些錯誤代號與文字,連 1244 的拼字錯誤在內,都出自微軟的 WebDAV 重定向程式文件。

檢查 1:WebClient 服務到底有沒有在跑

Windows 上每一個對應的 WebDAV 磁碟機都會經過 WebClient 服務。微軟在 2023 年 11 月淘汰了它,並在公告裡寫明 Webclient 服務預設不會啟動。在乾淨的 Windows 11 上,這一條比其他任何原因都常見。

powershell

Get-Service WebClient | Format-List Name, Status, StartType
Set-Service -Name WebClient -StartupType Automatic
Start-Service -Name WebClient

如果 services.msc 裡「狀態」欄是空的,代表 WebDAV 重定向程式根本沒載入,任何對應都不可能成功。而檔案總管這時給你的訊息是「您輸入的資料夾似乎無效」,於是你反覆檢查一個本來沒問題的 URL。

檢查 2:Windows 願不願意對 HTTP 送出 Basic 憑證

WebClient 會讀一個叫 BasicAuthLevel 的登錄檔值,文件給了三個取值:0 停用,1 只在 SSL 站台,2 在 SSL 與非 SSL 都允許。預設是 1,所以使用 Basic 驗證的 http:// 端點會在跳出密碼視窗之前就失敗。

cmd

reg add "HKLM\SYSTEM\CurrentControlSet\Services\WebClient\Parameters" /v BasicAuthLevel /t REG_DWORD /d 2 /f
net stop WebClient
net start WebClient

重啟不能省。微軟文件寫明:改動這個機碼下的任何值之後,都要重啟 WebClient 或重新開機。跳過這步,正是這麼多人認定這個解法是傳說的原因。

也要知道等級 2 的代價:憑證以明文傳輸。對 127.0.0.1 合理,在自己掌控的網路可以接受,跨公網就是錯的——那種情況應該用 HTTPS 端點。

檢查 3:URL 是不是重定向程式認得的形狀

  • 寫上協定。http://host:port/path。只寫主機名稱會被當成 SMB,永遠到不了你的伺服器。
  • 連接埠不是 80 或 443 就一定要寫。WebDAV 擴充規格記載,Vista 之前的用戶端只支援 80 連接埠,所以這套寫法看起來才這麼彆扭。
  • 子路徑要完全對上。伺服器常發布在 /dav 或 /remote.php/dav/files/alice 這類路徑下,對應高一層就會得到同樣的「似乎無效」。
  • 命令列兩種都行:net use * http://www.example.com,或文件定義的 UNC 形式 \\server[@SSL][@port][\path],其中 DavWWWRoot 指向伺服器根。

檢查 4:是不是舊憑證一直被重送

打開控制台、憑證管理員、Windows 憑證,刪掉該主機的所有項目,再用 net use Z: /delete 丟掉半成品的對應,然後重試。密碼明明改對了 0x80070043 還在,通常就是錯的那組還留在快取裡。

順帶一提:微軟明確說明,從 Windows 7 起 Basic 驗證的憑證無法由憑證管理員保存,所以這類對應不會在登入時無聲恢復。微軟自己的建議是用登入指令碼重新執行 net use。

檢查 5:沒人提的逾時與快取

以下全都在 HKLM\SYSTEM\CurrentControlSet\Services\WebClient\Parameters,全都由微軟文件記載,也全都要重啟服務才生效。一整類「時好時壞」的回報都能在這裡找到解釋。

  • ServerNotFoundCacheLifeTimeInSec,預設 60。WebClient 會記住「不是 WebDAV 伺服器」的主機,一分鐘內直接回傳失敗。修好伺服器立刻重試卻拿到同樣錯誤,就是這個原因。
  • InternetServerTimeoutInSec 預設 30、LocalServerTimeoutInSec 預設 15,分別是遠端與本機伺服器的連線逾時。
  • SendReceiveTimeoutInSec,預設 60,以每個請求計算,所以大檔案的慢速 PUT 可能死在這裡而不是尺寸限制。
  • FileAttributesLimitInBytes,預設 1,000,000,是單一集合上所有屬性的總大小上限,幾千個項目的資料夾就會碰到。
  • SupportLocking,預設 1。關掉會改變對不實作 LOCK 的伺服器的行為。
  • FileNotFoundCacheLifeTimeInSec。連線到區分大小寫的 Linux WebDAV 伺服器時,微軟建議設為 0,否則只有大小寫不同的兩個檔名會造成「找不到檔案」與資料被覆寫。

有時根本不是 Windows 的問題

  • macOS 的症狀不同:掛得起來,寫入卻無聲失敗,因為 Finder 需要宣告 LOCK 的 class 2 伺服器。見 Mac 上 WebDAV 很慢。
  • 如果你要做的是架伺服器而不是連伺服器,看 在 Windows 上跑 WebDAV 伺服器。
  • 如果對應能用、只是大檔案到 50MB 就停,上面全都不適用,那是 50MB 限制。

對應本機服務,例如 AnyStorage 的 3211 連接埠

AnyStorage 會在你自己的電腦上跑 WebDAV 服務:側邊欄 Services、WebDAV 頁籤、Start,端點 http://127.0.0.1:3211,連接埠可改。應用程式裡開著的每個連線都是這個根底下的一個資料夾,所以一次對應就能同時到達 S3 儲存桶、Cloudflare R2、Backblaze B2、MinIO、Google 雲端硬碟、OneDrive、Dropbox 與 SFTP 主機。

檢查 1 與 2 直接適用:端點是 HTTP、Basic 驗證永遠開著,所以 WebClient 必須在跑,BasicAuthLevel 必須是 2。憑證在 WebDAV 頁籤裡,預設帳號 anystorage,密碼是產生的 24 個字元。免費版掛載唯讀,讀寫屬於 Pro;連線是延遲建立的,所以只有這次工作階段在應用程式裡開過的連線才會出現在根目錄。目前版本沒有 TLS,這正是它預設繫結 127.0.0.1、並在你開啟區域網路存取前警告的原因。

全都試過了還是不行,怎麼辦?

用另一個 WebDAV 用戶端連同一個 URL。如果它連得上而檔案總管連不上,問題就在重定向程式而不是你的伺服器,再改登錄檔也沒用。

大量傳輸該用對應磁碟機嗎?

對應磁碟機適合瀏覽與小檔案拖放。大量傳輸應該放在直接對接儲存的用戶端裡,繞開 WebClient、它的登錄檔值,以及 4GB 的單檔硬上限。

換成 Windows 11 會好一點嗎?

不會。WebClient 在 Windows 10 與 11 上都是淘汰狀態,預設值還是十年前那套,兩邊都預設不啟動。把上面的檢查當成長期存在的步驟就好。