静态内容网站的IIS7最低HttpModulesconfiguration

我试图设置一个真正快速,压缩caching静态内容网站只服务于.jpg,.css和.js

我想从网站configuration中删除所有不需要的function:

但是这个configuration保持失败:

<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <urlCompression doStaticCompression="true" doDynamicCompression="false" /> <caching enabled="true" enableKernelCache="true"> <profiles> <add extension=".gif" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" /> <add extension=".png" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" /> <add extension=".js" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" /> <add extension=".css" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" /> <add extension=".jpg" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" /> <add extension=".jpeg" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" /> </profiles> </caching> <staticContent> <remove fileExtension=".js" /> <mimeMap fileExtension=".js" mimeType="text/javascript" /> <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" /> </staticContent> <modules> <clear /> <add name="HttpRedirectionModule" lockItem="false" /> <add name="StaticFileModule" lockItem="false" /> <add name="CustomLoggingModule" lockItem="false" /> <add name="CustomErrorModule" lockItem="false" /> <add name="IsapiModule" lockItem="false" /> <add name="AnonymousAuthenticationModule" lockItem="false" /> </modules> </system.webServer> </configuration> 

你并没有真正说出失败的原因,也没有提供错误信息,但是我会一边倒一边猜测。

我的猜测是,当你在模块内执行<clear /> ,你会得到一个“Lock Violation”错误。 这是因为在IIS7设置层次结构的更高层次上,模块部分(以及各个模块本身)被设置为locking,因此您无法在web.config文件中覆盖/删除它们。 这是devise的,因为这些模块实际上构成了正在运行的IIS系统。

为了能够在web.config中执行<clear />模块,您需要执行以下操作:

  • 制作%windir%\System32\inetsrv\config\applicationHost.config的备份副本
  • 打开%windir%\System32\inetsrv\config\applicationHost.config – 您将需要以pipe理员身份打开编辑器。 另外,如果您使用64位Windows,则需要使用64位编辑器才能看到该文件。
  • find<configSections>区域 – 在sectionGroup中 – 将会有一行显示:
    <section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Deny" />
    overrideModeDefault更改为Allow而不是Deny

这仍然不会让你在web.config / modules中做一个<clear /> ,因为许多核心模块都是单独locking的。

  • 现在查找applicationHost.config中的<modules>部分。
  • 此处列出的许多模块都将lockItem属性设置为True 。 将它们全部改为False
  • 保存你的applicationHost.config。

您现在应该可以在您的web.config文件中<clear />模块。