メインコンテンツへ移動
AnyStorage
無料ダウンロード

WebDAV エラーコード

入力したフォルダーが有効でないと言われる WebDAV

ネットワークドライブの割り当てで WebDAV の URL が拒否される原因は五つ。どれに当たっているかを一行で判定する OPTIONS チェックと、それぞれの対処。

「The folder you entered does not appear to be valid.」の正体、サーバー側か Windows 側かを切り分ける一つのコマンド、そしてマイクロソフトが文書化している原因。

the folder you entered does not appear to be valid、WebDAV ネットワークドライブ 割り当て できない、WebDAV Windows 11

ダイアログの文字列

text

The folder you entered does not appear to be valid. Please choose another.

ネットワークドライブの割り当てに WebDAV の URL を入れ、少し待たされ、そして拒否される。エラーコードもなく、どこが気に入らないのかのヒントもありません。同じ URL はブラウザで開けますし、別の WebDAV クライアントなら接続できます。

Windows はパスワードについて意見を持つ手前でこの文を出します。意味は二つのどちらかです。その URL と WebDAV の会話が成立しなかったか、会話を始めることすらできなかったか。原因は実質五つで、どちらの側にいるのかは一つのコマンドで分かります。

症状・原因・対処
ほかに観察できること原因対処
Get-Service WebClientStoppedWebDAV を話すサービスが動いていない開始して自動起動にする
URL が http:// でパスワードを一度も聞かれない平文 HTTP 上の Basic 認証が禁止されているBasicAuthLevel2
curl でそのパスに DAV 応答ヘッダーが無いWebDAV のルートではない、または無効本当の WebDAV パスを指定する
ポートが 80/443 以外、またはスキームを省略したWindows が受け付ける URL はブラウザより狭い完全な URL か UNC 形式を使う
古いサーバー、DAV: 接頭辞のないタグマイクロソフトが文書化した解析の癖サーバー側か更新プログラムで対処

手順 1:最初に打つべき一行

リダイレクターと同じ質問をサーバーに投げます。最初のリクエストは、指定したパスへの OPTIONS です。

powershell

curl.exe -i -X OPTIONS -u alice https://dav.example.com/

見るべきヘッダーは一つ。WebDAV の仕様である RFC 4918 は明確です。「All DAV-compliant resources MUST return the DAV header with compliance-class '1' on all OPTIONS responses.」つまり、まともなサーバーは DAV: 1, 2, 3 のような応答と、PROPFIND を含む Allow を返します。

DAV ヘッダーが無ければ、Windows の設定をいじるのはやめてください。そのパスが WebDAV のルートではない(同じ仕様は、/ を含む非 WebDAV リソースへの OPTIONS は「SHOULD NOT advertise WebDAV support」としています)か、サーバー側で WebDAV が無効です。たとえば Nextcloud は /remote.php/dav/files/<user> で公開していて、サイトのルートではありません。

ヘッダーがあるなら、サーバーは無罪で、残りの原因はすべて手元にあります。

手順 2:WebClient サービスを開始する

Windows で割り当てた WebDAV ドライブはすべて WebClient というサービスが担当します。マイクロソフトの非推奨機能一覧にはこう書かれています。「The Webclient (WebDAV) service is deprecated. The Webclient service isn't started by default in Windows.」クリーンインストールの Windows 11 では、これが単独で最多の原因です。

powershell

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

そして再試行の前に一呼吸。リダイレクターは「WebDAV ではないと判断したホスト」の一覧を持ち、ServerNotFoundCacheLifeTimeInSec の既定値は 60 秒です。その一覧にいる間は、ドキュメントの言葉どおり「a fail is returned immediately without attempting to contact the server」。直した直後に叩くと、キャッシュされた失敗を見せられます。

Windows Server ではデスクトップ エクスペリエンス機能を追加するまでリダイレクター自体が入っていません。デスクトップ版 Windows には最初から入っています。

手順 3:http:// への Basic 認証を許可する

エンドポイントが http:// で Basic 認証なら、Windows は認証を試す前に拒否します。スイッチは WebClient のパラメーターキーにある BasicAuthLevel(DWORD)です。マイクロソフトは 0 が無効、1 が「for SSL web sites only」、2 が「SSL and non-SSL web sites」と文書化しており、既定は 1 です。

cmd

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

再起動は省略できません。同じレジストリキーの注記に、値を変更したら Web Client の再起動か再起動が必要と書かれています。そして代償を理解しておくこと。暗号化されていない接続での Basic 認証はドキュメントが「strongly discouraged」と呼ぶもので、資格情報は平文で流れます。127.0.0.1 なら妥当、自分の LAN なら擁護可能、インターネット越しなら誤りです。

手順 4:リダイレクターが受け付ける書式で書く

ウィザードはスキームと非標準ポートを含む完全な URL を求めます。http://dav.example.com:8080/remote.php/dav/files/alice のように。ホスト名だけを入れると SMB の経路に入り、WebDAV サーバーには永遠に届きません。

切り分けはコマンドラインの方が楽です。文ではなく番号が返るからです。マイクロソフトの解説は素の URL 形式(NET USE * http://www.example.com)を使い、UNC 形式は \\server[@SSL][@port][\path] として文書化されています。@SSL が HTTPS、@port は 80/443 以外で必須、DavWWWRoot は WebDAV サーバーのルートを指します。

cmd

net use Z: \\dav.example.com@SSL\DavWWWRoot\files /user:alice *
net use Y: http://dav.example.com:8080/remote.php/dav/files/alice /user:alice *

これが System error 67 を返すなら、同じ原因リストを別方向から見ているだけです:net use のエラー 67。エクスプローラーが後で 0x80070043 を出すなら、それは同じ Win32 エラーを HRESULT に包んだものです:エラー 0x80070043

手順 5:マイクロソフト自身が挙げる原因

この拒否の一部には本物の解析バグがあり、マイクロソフトはこのメッセージ専用のサポート記事で説明しています。原因は同記事の言葉で、「The Windows Web Client service incorrectly assumes that all XML tags from WebDAV servers contain the namespace prefix 'DAV.' However, there are some scenarios in which this assumption is incorrect.」

つまり、PROPFIND の応答が妥当な XML でも DAV: 名前空間の宣言の仕方が違えば、頭から拒否されることがある。マイクロソフトの答えは Windows 7 / Windows Server 2008 R2 向けに Webclnt.dll を差し替える修正プログラムでした。現行 Windows と最新のサーバーならまず当たりませんが、当たっているときに資格情報をいくらいじっても直らない理由がこれです。

ついでに潰しておくと良い隣接原因が二つ。リクエストを横取りするプロキシ(リダイレクターは System error 224 を返し、信頼済みサイトへの追加を求めます)と、資格情報マネージャーから再生される古いパスワードです。対象ホストの Windows 資格情報をすべて削除し、net use Z: /delete して、もう一度試します。

ローカルの WebDAV サーバーを割り当てる場合

上の規則は、サーバーが自分の機械の中にあっても全部そのまま効きます。Windows はアドレスがループバックかどうかを気にしません。

AnyStorage(v0.2.24;macOS 11 以降 / Windows 10 以降 / Ubuntu 20.04 以降)は内蔵の WebDAV サーバーを http://127.0.0.1:3211 で動かし、アプリで開いている各接続がそのルート配下のフォルダーとして見えます。S3 バケット、Cloudflare R2、MinIO、Backblaze B2、SFTP ホストが一つのドライブレターから届き、ファイルシステムドライバーのインストールは不要です。エンドポイントは HTTP + Basic 認証なので、エクスプローラーに話をさせるには BasicAuthLevel2 で、WebClient が動いている必要があります。無料プランの接続数は 2 つ。

これは 0x80070043 と同じものですか?

厳密には違います。0x80070043 は割り当て処理自体が返す番号付きの失敗で、こちらはウィザードがそこに到達する前にアドレスを拒否しています。原因リストはほぼ重なるので、対処は同じになります。

Edge では開けるのにエクスプローラーでは無理なのは?

ブラウザは GET して返ってきたものを描くだけです。リダイレクターは OPTIONSPROPFIND を投げ、DAV ヘッダーと妥当なマルチステータス応答を要求します。前者に合格して後者で落ちるサーバーは存在します。

HTTPS は必須ですか?

技術的には必須ではありませんが、HTTP + Basic 認証なら BasicAuthLevel を上げる必要があり、その時点でパスワードは平文で流れます。自分の機械の外に出るなら https:// にして、値は 1 のままにしてください。

割り当てはできるのに大きいファイルで落ちます

別の、よく文書化された問題です。FileSizeLimitInBytes の既定は 50,000,000(10 進)で、それを超えるコピーは 0x800700DF で落ちます。Windows の WebDAV 50 MB 制限を参照してください。

次に読む