WebDAV

WebDAV

IIS 架设 WebDAV 服务器

测试: IIS on Windows 7 / Windows 10

在控制面板 windows 功能里启用 IIS 以及 IIS 项里的以下子项:Webdav, http basic authentication

IIS - Default web site - :

  • 右侧边栏 View Virtual Directories: 可以增加几个虚拟目录。
  • Directory Browsering : 右边栏点击 Enable 启用目录浏览。(推荐)
  • Authentication : 增加 basic authentication 并设为 enabled
  • MIME Types: 增加一个 ".*" 扩展名的文件类型,MIME 设为 "application/octet-stream" (也可以直接改 web.config 配置文件,参考下面)。IIS只允许访问这个列表中存在的后缀类型文件,所以加个通配符MIME以允许访问所有类型文件。
  • WebDav Authoring rules: 增加规则 Path: *; All content; Allow access to Specified roles or user groups: administrators; Permissions: Read, Source (注意 source 权限必须勾选。否则 windows 资源管理器自带的 webdav client 连接时能够列出目录文件,但无法读取/写入任何文件,报错 0x80070780。坑爹的是其他 WebDAV 客户端这种情况下完全能够正常连接)

IIS 默认网站 (Default Web Site) 文件夹位置:

  • WWW-root: %SystemDrive%\inetpub\wwwroot
  • 日志: %SystemDrive%\inetpub\logs\LogFiles

修改 %SystemDrive%\inetpub\wwwroot\web.config 这个 IIS 默认网站配置文件,增加 allowDoubleEscaping="true" 配置。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <staticContent>
            <mimeMap fileExtension=".*" mimeType="application/octet-stream" />
        </staticContent>
        <directoryBrowse enabled="true" />
    <security>
        <requestFiltering allowDoubleEscaping="true" />
    </security>
    </system.webServer>
</configuration>

如果不增加这个配置,WebDAV / IIS 访问含有 "+" 等特殊字符的文件夹时会报 404 错误(double escape sequence inside a url : The request filtering module is configured to deny a request that contains a double escape sequence)。

IIS 里 Default Web Site - 侧边栏 restart 重启网站使配置更改生效。

(不推荐) Windows 资源管理器里映射 webdav 服务器为本地路径

Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters

修改以下配置:

BasicAuthLevel: 默认为 1 仅允许连接 ssl 的 webdav 服务器。修改为2允许连接 http 的 webdav服务器。
FileSizeLimitInBytes: 允许访问的 WebDav 服务器里文件最大大小。默认值仅为 50000000 (47MB)。修改为(DWORD)允许的最大值 4294967295 (4TB)。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\WebClient\Parameters]
"FileSizeLimitInBytes"=dword:ffffffff
"BasicAuthLevel"=dword:00000002

然而这种方式最大的问题是 windows 资源管理器自带的 webdav client 不支持 Content-Range 的 stream,访问文件会先下载整个文件。这导致其根本无法用于 stream 播放 webdav 服务器里的视频。目前此问题无解决方法

(推荐) rclone 挂载 webdav

首先 rclone 里创建 webdav 的 remote "webdav-server"

address: http://1.2.3.4
user:
pass

rclone mount --no-modtime --max-read-ahead 256M --buffer-size 64M --dir-cache-time 24h --poll-interval 5m --read-only --vfs-cache-mode writes webdav-server:/ W:


Last update: 2020-05-25 04:48:51 UTC | Redirect from Windows/WebDAV