问题 如何防止ASP.NET MVC在Windows Azure上处理静态文件(js和图像)?


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

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

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


4827
2017-09-06 14:07


起源



答案:


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


6
2017-09-06 14:12



我懂了。也许如果我可以阻止HttpModules在那些静态请求上运行...... - Chris Pietschmann


答案:


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


6
2017-09-06 14:12



我懂了。也许如果我可以阻止HttpModules在那些静态请求上运行...... - Chris Pietschmann


我删除了“runAllManagedModulesForAllRequests = '真'“在web.config中定义并添加”前提='managedHandler“对于我不想为静态内容执行的HttpModule注册。

我还实现了达林的答案。

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

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

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


7
2017-09-06 14:37



removed the "runAllManagedModulesForAllRequests='true'" definition in the web.config 为我做了诀窍 - Michel