【问题标题】:asp.net mvc does it handle all requests? - iis 7 integrated modeasp.net mvc 是否处理所有请求? - iis 7 集成模式
【发布时间】:2009-04-07 22:55:15
【问题描述】:

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

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

现在我想知道的是,asp.net mvc 处理程序是否提供所有服务? (css、图像、zip 档案)而不是静态文件处理程序。

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

【问题讨论】:

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


    【解决方案1】:

    默认情况下,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 的请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-09
      • 1970-01-01
      • 2013-01-20
      • 2018-08-03
      • 1970-01-01
      相关资源
      最近更新 更多