ASP.NET MVC路由和文件路径
问题描述:
我有一个与文件路径名称相同的控制器操作。像:ASP.NET MVC路由和文件路径
www.example.com/userfiles/path/to/userfile.jpg
基本上我有一个userfiles控制器和索引操作后userfiles /是一个路径的一切。在我的应用程序的根目录中还有一个userfiles虚拟目录。我想要发生的是,如果在userfiles虚拟目录中不存在userfiles /(在这种情况下,路径)后面的目录,则在userfilesController上使用index action(如果该目录存在),然后使用该路径。
这在我运行iis 5的windows xp dev机器上完美运行。但是,一旦我将它移动到活动服务器(Windows Server 2003 iis 6),我得到一个404错误,就好像路径不存在而不是到userfiles控制器索引操作。
在routes文件我有:
routes.MapRoute(
"Userfiles", // Route name
"userfiles/{*url}", // URL with parameters
new { controller = "Userfiles", action = "Index" } // Parameter defaults
);
我缺少什么?它工作得很好。
答
所以我发现我的问题是我们确实为网站启用了通配符映射,但是,由于性能原因,我们也因为某些目录而关闭了它。我重新启用了通配符以查找有问题的目录,并且它开始像我的开发盒一样工作。喜悦!
答
我知道这已经被认为这可能有助于某人回答。在你的web.config,你可能需要添加runAllManagedModulesForAllRequests =“真”
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true" />
希望这可以帮助别人。
你如何让你的iis6运行mvc无扩展路由? - 您是否使用通配符映射,URL重写,* .mvc扩展名或其他解决方法? – Christian13467 2010-08-20 20:29:54
我想我们正在使用通配符映射。 – smartdirt 2010-08-20 20:47:57