2009-04-07 52 views
2

我有一個使用集成模式在IIS 7上運行的使用asp.net mvc的網站。當我輸入mysite.com/test.html時,我注意到我回來了IControllerFactory未返回名爲'test.html'的控制器的控制器。asp.net mvc它處理所有請求? - iis 7集成模式

我應該得到的是一個404錯誤,這應該由IIS7靜態處理程序提供。

現在我想知道,asp.net mvc處理程序服務於一切嗎? (css,圖像,zip檔案),而不是靜態文件處理程序。

如果確實如此,那麼我可以解決這個問題,這樣靜態處理程序將爲擴展名的文件提供服務。否則,這似乎是一個很大的性能問題。

回答

2

默認情況下,ASP.NET MVC將處理所有請求,因爲路由被設計爲處理任何路徑。你可以通過使用IgnoreRoute方法,像這樣(在Global.asax中)明確排除某些路徑:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    // This is already added by MVC 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    // Ignore any htm files 
    routes.IgnoreRoute("{filename}.htm"); 

    // Other routes 
    // ... 
} 

我懷疑這仍然會導致請求通過ASP.NET(去雖然我懷疑他們會「秋天通過「相當快)。如果這是一個問題,你可以嘗試改變web.config設置在所有未通過請求ASP.NET:

<modules runAllManagedModulesForAllRequests="false" /> 

但是你需要設置正是你想通過其請求ASP.NET。

相關問題