我有一个ASP.NET站点,它使用自己的一套HTTP处理程序,并不需要任何模块。
所以,在IIS6中,我所要做的就是在我的web.config中:
<httpModules> <clear /> </httpModules>
但是,如果我尝试在IIS7的system.webServer
区域中执行相同的操作,则当我尝试查看该站点时,出现500错误;在IISpipe理器中,当我尝试查看处理程序映射时,出现一个popup框消息:
执行此操作时发生错误
- IIS 7 + ASP.NET 4
- 在IIS中零停机上传/回滚
- 如何减慢黑客
- IIS中的“.NET Framework版本”设置实际上是做什么的?
- 在Windows 7 SP1 IIS错误与“无效的应用程序path”
细节:
文件名:
?\ \ C:\网站\ TheWebSiteGoesHere \的web.config
行号:39
错误:locking违规
第39行是<clear />
元素的位置。
一些使用Googlesearch的解决scheme涉及到运行这个命令:
%windir%\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/modules
…但是这并没有解决问题。
这是devise。 system.webServer的部分本质上定义了IIS本身。 如果你,你将不会被留下任何东西。 在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" /> ...
注意lockItem属性。 因为有一个或多个锁项目,将会违反locking。
所以,你需要特别从web.config中删除你不想要的项目,或者如果你真的需要清除所有的项目并添加自己的项目,那么在applicationHost.config中,移除lockItem =“true”每个这些元素,并确保添加足够的他们,以便您的Web服务器将实际工作。
编辑
(根据他的请求附上丹尼尔的更多信息(斯科特))
这是我根据斯科特所说的做的:
在%windir%\ system32 \ inetsrv \ config中打开applicationHost.config。 请注意,在64位Windows Server 2008中,您需要使用64位编辑器编辑文件(本机记事本将执行该操作,但Notepad ++将无法find该文件)。 在这里看到更多关于这方面的信息。
在元素中,将所有模块的lockItem属性更改为false。
在我的Web应用程序的web.config文件中,然后可以执行以下操作:
<system.webServer> <modules> <clear /> </modules> </system.webServer>
当然,正如Scott指出的那样,这意味着没有networking服务器了,所以下面是我需要的一些模块(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" />
另外,对于任何感兴趣的人来说,这里是我为什么这样做的背景故事 。
斯科特,你可以把这个附加到你的答案吗?
这是我根据斯科特所说的做的:
在%windir%\system32\inetsrv\config
打开applicationHost.config
。 请注意,在64位Windows Server 2008中,您需要使用64位编辑器编辑文件(本机记事本将执行该操作,但Notepad ++将无法find该文件)。 在这里看到更多关于这方面的信息。
在<system.webServer>
元素中,将所有模块的lockItem
属性更改为false
。
在我的Web应用程序的web.config文件中,然后可以执行以下操作:
<system.webServer> <modules> <clear /> </modules> </system.webServer>
当然,正如Scott指出的那样,这意味着没有networking服务器了,所以下面是我需要的一些模块(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" />
另外,对于任何感兴趣的人来说, 这里是我为什么这样做的背景故事 。
我希望现在帮助也不迟。
我今天得到了这个问题,并解决了编辑下面的ApplicationHost.Config XML节点的问题:
httpErrors lockAttributes =“allowAbsolutePathsWhenDelegated,defaultPath”
删除“,defaultPath”并重新启动IIS(iisreset)。
我希望它的帮助。
尝试删除原来的web.config(创build备份),并通过IIS(它将创build新的web.config)进行更改后恢复原来的更改。 如果您configurationHTTP错误请按照此http://paymentgatewayintegrationhelp.com/Tech-Help/HTTP-Errors-and-webconfig-Lock-Violation-1140.asp