【发布时间】:2010-10-12 06:41:43
【问题描述】:
我希望在 ASP.Net 中实现 WebDAV 服务器。该应用程序将部署到 IIS 6。我见过一些提供此功能的框架,但我似乎无法确定它们如何在不(显然)修改 IIS 设置的情况下完成它。
我的具体问题是如何配置 IIS 和 ASP.Net,以便 IHttpModule/IHttpHandler 可能有机会处理任何其他 WebDAV 动词(即 LOCK、OPTIONS、PROFIND 等)
【问题讨论】:
我希望在 ASP.Net 中实现 WebDAV 服务器。该应用程序将部署到 IIS 6。我见过一些提供此功能的框架,但我似乎无法确定它们如何在不(显然)修改 IIS 设置的情况下完成它。
我的具体问题是如何配置 IIS 和 ASP.Net,以便 IHttpModule/IHttpHandler 可能有机会处理任何其他 WebDAV 动词(即 LOCK、OPTIONS、PROFIND 等)
【问题讨论】:
查看 Geoff Lane 关于 WebDAV 的文章:
【讨论】:
我会看一下这个项目http://sourceforge.net/projects/webdav/,以了解 C# 中的 webdav 实现。如果您必须自己构建,最好参考已完成的;如果可以重复使用就更好了。
是的,您需要修改 IIS6 设置以支持将 .NET 的 ISAPI 模块绑定到所有请求类型,并且不检查文件是否存在。在 IIS6 上没有其他方法可以做到这一点,因为 Windows 上的 web 开发客户端在检查 webdav 支持时会在网站的根 (/) 上执行 OPTIONS 请求。
II7 为您提供更多选择...
【讨论】:
如果不修改 IIS 设置,就无法在 IIS 6 中配置 WebDAV 动词。只有 IIS 7 及更高版本才有可能。
要在 IIS 6 中处理 WebDAV 所需的所有动词,您需要创建一个应用程序 wildacrd 映射。在 IIS 6 MMC 控制台中右键单击您的 Web 应用程序,然后转到 Properties->Virtual Directory Tab->Configuration。点击插入添加新的通配符映射。
在应用程序属性的主目录选项卡上,将执行权限设置为仅脚本并允许读取。
这是 web.config 示例:http://www.webdavsystem.com/server/prev/v2/documentation/hosting_iis_asp_net/webconfig_example
请注意,此 web.config 示例是专门使用 ASP.NET 2.0 在 Server 2003 上的 IIS 6 和 IIS 5.1 在 XP 上创建和测试的。它不处理 &、%、+ 和尾随点 (.)。
ASP.NET 4.x 提供了处理 WebDAV 服务器中任何特殊字符的方法,configuring web.config,包括 &、% 和 '.'。支持IIS 6-8版本的web.config由IT Hit WebDAV Server Engine Wizard生成。
【讨论】: