拦下这次复制的是本机,不是服务器
在文件资源管理器里映射好 WebDAV 网络驱动器,把一个 180MB 的视频拖进去,进度条还没走就断了,弹出 0x800700DF,大意是文件大小超过了允许的限制,无法保存。
服务端什么都没拒绝。这次复制是 Windows 在数据发出去之前自己掐掉的。
Windows 上所有映射的 WebDAV 驱动器都由 WebClient 服务接管,而这个服务在注册表里带着一个 FileSizeLimitInBytes 值。全新安装的默认值是 50,000,000 字节——十进制的五千万,换算成二进制单位大约是 47.7 MiB。传 Word、PDF 一辈子碰不到它,传视频、数据库备份、PSD、系统镜像几乎必然撞上。
顺带纠正一个流传很广的说法:不少帖子把它写成"WebDAV 50GB 限制"。不是 50GB,是 50MB。少写的那三个零,被人抄了十几年。
改注册表抬高上限
需要管理员权限,改完对这台机器上的所有 WebDAV 映射一起生效。
打开 regedit,定位到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters,找到 FileSizeLimitInBytes;如果不存在,就新建一个同名的 DWORD (32 位) 值。双击它,基数选十进制,填入想要的字节数。常见的两种填法:直接填 4294967295 顶满,或者填 2000000000 这类自己心里有数的数字。
改完一定要重启服务,因为 WebClient 只在启动时读这个值。以管理员身份打开命令提示符,先 net stop WebClient,再 net start WebClient,比在 services.msc 里翻要快。然后断开网络驱动器重新连接,再试一次复制。
4GB 这道墙抬不动
4294967295 就是 0xFFFFFFFF。这个上限在 Windows 里是按 32 位存的,所以系统自带的 WebDAV 客户端最多走到差不多 4GB,没有任何注册表项能突破。
还有一种情况经常被误认成体积限制:文件传到一半才失败,而不是一开始就失败。那通常是超时,不是 FileSizeLimitInBytes。WebClient 的超时值同样放在这个 Parameters 键下,链路慢、单个大文件要传好几分钟的时候,值得一并调大。
WebDAV 50MB 限制在客户端,不在服务端
这一点比改注册表更重要,也是多数文章不会说的:FileSizeLimitInBytes 属于 WebClient,服务端压根不知道有这么个值存在。换个客户端,这道限制就不存在了。
AnyStorage 的做法是在本机跑一个 WebDAV 服务。侧边栏点"服务",切到 WebDAV 标签页,按启动,就得到 http://127.0.0.1:3211。HTTP Basic 认证一直开着,默认用户名 anystorage,首次使用时自动生成 24 位随机密码,两者都可以改,旁边都有复制按钮。当前在 App 里处于连接状态的每个存储,都会以连接名变成这个地址根目录下的一个文件夹——阿里云盘、阿里云 OSS、腾讯云 COS、S3、Cloudflare R2,甚至群晖上的 SFTP,一共 20 种连接类型都能这样暴露出来。
这个服务读取走 HTTP Range 流式返回,写入也是流式的,不会把整个文件先塞进内存,本身没有任何体积上限。用任意第三方 WebDAV 客户端连同一个地址,3GB 的文件照样传得动,注册表一个字都不用碰。超过 4GB,或者要批量搬运,那就别走挂载了,直接在 AnyStorage 里传——它直连存储后端,跟 WebClient 没有半点关系。
有几件事我们更愿意提前讲清楚:
- 免费版的 WebDAV 服务是只读的,你实际上是在从挂载点往外读文件。0x800700DF 对读取方向同样成立。读写属于 Pro 功能。
- 同一个 WebClient 默认还拒绝 HTTP Basic 认证。要映射 http:// 地址,通常得把同一个 Parameters 键下的 BasicAuthLevel 改成 2,然后再重启一次服务。
- 当前版本没有 TLS,地址是明文 http。这正是我们默认只监听 127.0.0.1 的原因,开启局域网访问时 App 会明确弹出警告。
- App 重启之后,一个连接要先在 App 里打开过一次,才会出现在 WebDAV 根目录下。连接是懒加载的。
三种情况怎么选
- 文件在 50MB 以内:默认值够用,什么都不用改。
- 文件在 4GB 以内,且能动注册表:设好 FileSizeLimitInBytes,重启 WebClient。
- 文件超过 4GB,或者是公司管控的电脑改不了注册表:用第三方 WebDAV 客户端连同一个本地地址,或者干脆在 App 里传。
到 2026 年,WebClient 仍然是微软标记为弃用的组件,一堆十年前的默认值原封不动留着。所以在 Windows 上 WebDAV 传输出问题、同一个地址在 Mac 上却一切正常时,先怀疑客户端。