2010-08-20 171 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" /> 

希望這可以幫助別人。