如何让自定义 WebDAV 服务器与 MS 微型重定向器协同工作

如何让自定义 WebDAV 服务器与 MS 微型重定向器协同工作

我编写了一个自定义 WebDAV 服务器,它通过数据库验证用户身份,并根据数据库中的记录提供虚拟文件系统。它与第三方 WebDAV 客户端配合良好,但在将驱动器映射到 http 位置时无法与 Windows 内置微型重定向器配合使用。

最奇怪的是,在我编写服务器的开发电脑上,我可以正常连接,但是任何其他尝试访问该服务器的计算机都无法与微型重定向器连接。

我使用 Fiddler 分析了网络流量,一切似乎都很好。当我尝试映射驱动器时,会发送 OPTIONS 标头,我的服务器会响应 200 OK。然后 mini-redirector 会发送深度为 0 的 PROPFIND 方法。我的服务器会响应 401 unauthorized。这会打开一个用户和密码登录对话框。输入密码后,会发送一个新的 PROPFIND 请求,但这次带有授权标头。一切似乎都运行正常,我的服务器接受登录凭据,并响应 207 多状态响应,其中带有指向根目录的“HREF”。此时,mini-redirector 再次显示登录提示,总共显示 3 次,然后无法连接并显示无法找到服务器的错误。奇怪的是,服务器确实找到了,我可以在 Fiddler 中看到它,并且服务器的响应符合预期。

其他所有第三方 WebDAV 客户端都与我的服务器进行了类似的交换,并连接并正常显示目录列表。只有微型重定向器出现故障。正如我上面提到的,它在带有微型重定向器的开发机器上完美运行(尽管我连接的 IIS 7.5 服务器不在我的开发机器上)。其他所有计算机都无法连接。我已确保使用注册表破解来允许在非安全 HTTP 站点上进行基本身份验证。我甚至将我的服务器移动到带有 SSL 证书的安全 HTTPS 站点,以防万一出现问题,但它仍然不起作用。有人有什么想法吗?我认为这与服务器上的 IIS 7.5 设置有关,或者与除我的开发机器之外的所有其他客户端机器上的设置有关,因为我的代码似乎没问题,服务器似乎可以很好地响应微型重定向器请求,它只是没有像所有其他客户端一样在 207 多状态响应后映射驱动器。

任何帮助都将不胜感激。令人沮丧的是,我预计 mini-redirector 是最难运行的,所以我先在我的开发机器上让它运行,然后再用所有其他客户端进行测试,所以我认为我的情况很好,直到我尝试在其他计算机上连接并发现它失败了,但只有使用 mini-redirector 时才会失败。遗憾的是,mini-redirector 对我的潜在客户来说是最容易使用的,因此它必须与 mini-redirector 配合使用。我可以提供 Fiddler 的响应/请求,如果这可以帮助任何人与我一起调试这个问题。

答案1

Microsoft WebDav Redirector 有一个已知错误,它不会让您使用默认的 XML 命名空间。添加命名空间前缀并用它来标记我的所有 xml 元素后,我的问题就消失了。

http://lists.w3.org/Archives/Public/public-html/2011Jan/0263.html

相关内容