搜尋這個問題,第一頁多半是沒有結論的論壇貼文。原因之一是:「Windows 無法連線 WebDAV」不是一種故障,至少有九種,而且 Windows 會用同一句含糊的訊息回報其中好幾種。
所以照症狀查。先在表裡找到你看到的那句話,再去做它指向的檢查。前兩項能解決絕大多數情況,後面每一條都是「穿著相似訊息的另一個問題」。
| Windows 顯示的內容 | 原因 | 解法 |
|---|---|---|
錯誤碼: 0x80070043 | WebClient 沒執行、HTTP 上的 Basic 驗證,或 URL 形式不對 | 檢查 1 到 3,詳見 錯誤 0x80070043 |
發生系統錯誤 67。 | 同樣三個原因,由 net use 回報 | net use 錯誤 67 |
| 您輸入的資料夾似乎無效 | 多半是 WebClient 沒執行,或子路徑不對 | 檢查 1 與 3 |
超過約 50MB 的檔案出現 0x800700DF | FileSizeLimitInBytes 預設 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 上都是淘汰狀態,預設值還是十年前那套,兩邊都預設不啟動。把上面的檢查當成長期存在的步驟就好。