2010-08-20 179 views
3

我有一个与文件路径名称相同的控制器操作。像: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 
); 

我缺少什么?它工作得很好。

+0

你如何让你的iis6运行mvc无扩展路由? - 您是否使用通配符映射,URL重写,* .mvc扩展名或其他解决方法? – Christian13467 2010-08-20 20:29:54

+0

我想我们正在使用通配符映射。 – smartdirt 2010-08-20 20:47:57

回答

1

所以我发现我的问题是我们确实为网站启用了通配符映射,但是,由于性能原因,我们也因为某些目录而关闭了它。我重新启用了通配符以查找有问题的目录,并且它开始像我的开发盒一样工作。喜悦!

0

我知道这已经被认为这可能有助于某人回答。在你的web.config,你可能需要添加runAllManagedModulesForAllRequests =“真”

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

希望这可以帮助别人。