【问题标题】:ASP.NET MVC routing and file pathASP.NET MVC 路由和文件路径
【发布时间】:2010-08-20 20:24:31
【问题描述】:

我有一个与文件路径同名的控制器操作。喜欢:

www.example.com/userfiles/path/to/userfile.jpg

基本上,我有一个 userfiles 控制器,并且在 index 操作中 userfiles/ 之后的所有内容都是路径。在我的应用程序的根目录中还有一个 userfiles 虚拟目录。我想要发生的是,如果 userfiles 虚拟目录中不存在 userfiles/ 之后的目录(在这种情况下为路径),则如果该目录确实存在,则使用 userfilesController 上的 index 操作,然后使用路径原样.

这在我运行 iis 5 的 windows xp 开发机器上完美运行。但是,一旦我将它移动到实时服务器(Windows server 2003 iis 6),我得到一个 404 错误,好像路径不存在而不是去userfiles 控制器索引操作。

在我的路由文件中:

routes.MapRoute(
    "Userfiles",                                       // Route name
    "userfiles/{*url}",                                // URL with parameters
    new { controller = "Userfiles", action = "Index" } // Parameter defaults
);

我错过了什么?它工作得很好。

【问题讨论】:

  • 如何让您的 iis6 使用基于 mvc 无扩展的路由运行? - 您是否使用了通配符映射、url 重写、*.mvc 扩展名或任何其他解决方法?
  • 我认为我们正在使用通配符映射。

标签: .net asp.net-mvc routing


【解决方案1】:

所以我发现我的问题是我们确实为该站点启用了通配符映射,但是,由于性能原因,我们也为某些目录关闭了它。我已经为有问题的目录重新启用了通配符,这一切都开始像在我的开发盒上一样工作。喜悦!

【讨论】:

    【解决方案2】:

    我知道这已经通过认为这可能对某人有所帮助而得到了回答。在您的 web.config 中,您可能需要添加 runAllManagedModulesForAllRequests="true"

    <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
    

    希望这对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 2011-02-26
      • 1970-01-01
      • 2014-12-23
      • 2017-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      • 2010-09-24
      相关资源
      最近更新 更多