我试图使用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.
有什么建议?