asp.net mvc会处理所有请求吗? - iis 7集成模式

时间:2009-04-07 22:55:15

标签: asp.net asp.net-mvc iis-7

我使用集成模式在IIS 7上运行使用asp.net mvc构建的站点。我注意到当我输入mysite.com/test.html时,我回来了IControllerFactory没有为名为'test.html'的控制器返回控制器。

我应该得到的是404错误,这应该由IIS7静态处理程序提供。

现在我想知道,asp.net mvc处理程序是否提供服务? (css,images,zip archives)而不是静态文件处理程序。

如果确实如此,那么我可以解决这个问题,因此静态处理程序将提供带扩展名的文件。否则,这似乎是一个很大的性能问题。

1 个答案:

答案 0 :(得分: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的请求。