我正在尝试使用 MVC 生成一个简单的 WebDAV 服务器,我终于到了需要向用户提供请求文件的阶段。
我设置了一个路由来处理遍历"webdav/{*path}"
工作正常的目录结构,直到该路径以文件名结尾。此时,IIS 似乎认为它是一个静态文件,并尝试从磁盘提供该文件。由于它不在 URL 中指定的位置,因此它返回 404 错误。
我没有任何更改 url 的自由,我基本上需要它在表单中,否则 Windows 资源管理器无法将其用作映射驱动器:
GET /webdav/Test/Test2.txt
我已经将路由设置为贪婪匹配,因为目录结构可以有多个级别。我也设置了routes.RouteExistingFiles = true;
这是在我的开发机器上使用 IIS Express 8.0。
我已经建立了一个空白的 MVC 项目来测试它,这就是 RegisterRoutes 方法:
routes.RouteExistingFiles = true;
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "WebDAVGet",
url: "webdav/{*path}",
defaults: new { controller = "WebDAV", action = "Get", path = "" });
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index",
id = UrlParameter.Optional }
);
所以,要/webdav/Test/Test2
在我的控制器中命中断点,但要给/webdav/Test/Test2.txt
我一个 404。
有什么建议么?