11

我有一个托管在 Windows Azure 上的 ASP.NET MVC 应用程序,并且从网站提供的所有静态文件都由 ASP.NET 处理。有没有办法让 IIS 直接为静态文件提供服务,而不是通过 ASP.NET 路由这些请求?我希望帮助提高从服务器返回这些静态文件的性能。

我不确定这是否是 ASP.NET MVC 本身所做的,或者是因为我将它托管在 Azure 上。

更新:我希望这样做的主要原因是因为静态文件由应用程序中注册的所有 HttpModules 处理,因此会降低一些性能。

4

2 回答 2

7

我删除了 web.config 中的“ runAllManagedModulesForAllRequests='true' ”定义,并将“ preCondition='managedHandler ”添加到我不想为静态内容执行的 HttpModule 注册中。

我还实施了达林的回答。

不完全是我想要的,但它似乎符合要求。

更新:如果您从 web.config 中删除“runAllManagedModulesForAllRequests=true”,请确保您的 IIS 是最新的,否则无扩展 URI 将不再工作。知识库:http: //support.microsoft.com/kb/980368/en-us

(当然,即使您保留该选项,您也应该担心您的服务器是最新的。)

于 2011-09-06T14:37:27.157 回答
6

在 IIS 7 集成模式下使用时,所有请求都通过托管管道。它已充分优化,您无需担心。另一方面,如果您注意到这些静态文件被应用程序的 ASP.NET 路由引擎截获,您可以尝试将它们作为IgnoreRoute定义添加到您的Global.asax.

于 2011-09-06T14:12:22.673 回答