asp.net-mvc - MVC 路由捕获文件名作为参数

标签 asp.net-mvc

我正在尝试使用 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在我的 Controller 中遇到断点,但转到 /webdav/Test/Test2.txt给我一个 404。

有什么建议吗?

最佳答案

我需要添加

<modules runAllManagedModulesForAllRequests="true">

到网络配置。

啊,我已经为此苦苦挣扎了几天,我知道在这里发帖会改变阻塞!

关于asp.net-mvc - MVC 路由捕获文件名作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12463021/

相关文章:

c# - jQuery 无限滚动和 Gridview

asp.net-mvc - ASP.NET MVC 内置对 DropDownList 编辑器模板的支持

c# - 如何检查 RedirectToRouteResult 生成的 URL?

asp.net-mvc - ASP.NET4.0 MVC4 IIS7.5 错误 403.14 我真是拔头发了

c# - 锁定每个用户的创建/更新/删除请求

asp.net-mvc - ASP.NET MVC 中的嵌套表单

asp.net-mvc - asp.net mvc keep object alive, 信息

c# - 在 View 或 Controller 之外的 ASP.NET MVC 中生成 url

jquery - JQuery 中的 ASP.NET MVC Url.Action 无法识别

asp.net-mvc - 为什么在 asp.net 身份中验证电话号码后注销?