我使用集成模式在IIS 7上运行使用asp.net mvc构建的站点。我注意到当我输入mysite.com/test.html时,我回来了IControllerFactory没有为名为'test.html'的控制器返回控制器。
我应该得到的是404错误,这应该由IIS7静态处理程序提供。
现在我想知道,asp.net mvc处理程序是否提供服务? (css,images,zip archives)而不是静态文件处理程序。
如果确实如此,那么我可以解决这个问题,因此静态处理程序将提供带扩展名的文件。否则,这似乎是一个很大的性能问题。
答案 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的请求。