2009-04-07 55 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。

相关问题