Dan*_*fer 18 iis-7 asp.net web.config
我有一个 ASP.NET 站点,它使用自己的一组 HTTP 处理程序并且不需要任何模块。
所以,在 IIS6 中,我所要做的就是在我的 web.config 中:
<httpModules>
<clear />
</httpModules>
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试在system.webServerIIS7 区域中执行相同操作,则在尝试查看站点时会收到 500 错误,而在 IIS 管理器中,当我尝试查看处理程序映射时,我会收到一个带有消息的弹出框:
执行此操作时出错
细节:
文档名称:
\?\C:\Sites\TheWebSiteGoesHere\web.config
行号:39
错误:违反锁
第 39 行是<clear />元素所在的位置。
一些谷歌搜索使我找到了一个涉及运行此命令的解决方案:
%windir%\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/modules
……但这并没有解决问题。
Sco*_*MVP 11
那是设计使然。该<modules>system.webServer的部分本质上定义IIS本身。如果你<clear />,你不会留下任何东西。在 applicationHost.config 中,你应该有这样的东西:
<modules>
<add name="HttpCacheModule" lockItem="true" />
<add name="DynamicCompressionModule" lockItem="true" />
<add name="StaticCompressionModule" lockItem="true" />
<add name="DefaultDocumentModule" lockItem="true" />
<add name="DirectoryListingModule" lockItem="true" />
<add name="IsapiFilterModule" lockItem="true" />
<add name="ProtocolSupportModule" lockItem="true" />
<add name="HttpRedirectionModule" lockItem="true" />
<add name="StaticFileModule" lockItem="true" />
...
Run Code Online (Sandbox Code Playgroud)
注意 lockItem 属性。因为有1个或多个锁项,会抛出锁违例。
因此,您要么只需要从 web.config 中专门删除您不想要的项目,要么如果您真的需要全部清除它们并重新添加您自己的项目,则在 applicationHost.config 中删除 lockItem="true"这些元素中的每一个,并确保添加足够的元素,以便您的 Web 服务器能够实际工作。
编辑
(根据丹尼尔的要求附加了更多信息。(斯科特))
这是我根据 Scott 所说的所做的:
在 %windir%\system32\inetsrv\config 中打开 applicationHost.config。请注意,在 64 位 Windows Server 2008 中,您需要使用 64 位编辑器编辑文件(本机 Notepad 可以,但 Notepad++ 将无法找到该文件)。有关这方面的更多信息,请参见此处。
在<system.webServer>元素中,将所有模块上的 lockItem 属性更改为 false。
在我的 web 应用程序的 web.config 文件中,然后能够执行以下操作:
<system.webServer>
<modules>
<clear />
</modules>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
当然,正如 Scott 指出的那样,这意味着没有剩余的 Web 服务器,所以这里是让我的东西再次运行所需的最少模块集(YMMV):
<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" />
Run Code Online (Sandbox Code Playgroud)
另外,对于任何感兴趣的人,这里是我为什么要这样做的背景故事。
| 归档时间: |
|
| 查看次数: |
33574 次 |
| 最近记录: |