iis 7.0,模块订单更改

时间:2009-05-26 12:23:43

标签: asp.net iis-7

“条目无法重新排序,因为其中一个或多个已被锁定在父文件中”

在iis 7.0管理器中,当我尝试更改应用程序中的模块顺序时,它会给出此消息。

如何更改模块的顺序?可能吗?

2 个答案:

答案 0 :(得分:3)

你不能在服务器级别而不是站点级别上进行吗?

答案 1 :(得分:2)

要更改站点的模块顺序,首先需要在服务器级别解锁受影响的模块。因为您并不真正知道哪些模块受到影响,所以我通常会解锁它们。最简单的方法是使用PowerShell脚本(如果您仍在IIS7上,则需要下载PowerShell IIS snapin)。

将以下内容保存到文本文件中:unlock-modules.ps1

 Import-Module WebAdministration

 Get-WebConfiguration `
 -pspath 'MACHINE/WEBROOT/APPHOST' `
 -filter "system.webServer/modules/add" -recurse | `
 where {$_.PSPath -eq 'MACHINE/WEBROOT/APPHOST' -and $_.Type -eq ''} `
 | foreach {         
     $filter = "system.webServer/modules/add[@name='" + $_.Name + "']"     
     Remove-WebConfigurationLock -pspath 'MACHINE/WEBROOT/APPHOST'  -filter $filter -verbose
 }

以提升的管理员身份打开PowerShell提示符并运行脚本。

脚本循环遍历服务器级别的所有模块。通常只锁定本机模块(带有'empty'类型'属性)。将它们全部解锁。

现在,您可以在站点级别更改模块的顺序。

重新订购时要小心,如果更改某些系统模块的顺序,IIS可能无法以预期的方式工作。

另外请记住,如果您在服务器级别对模块进行更改,则该站点将不再继承这些模块,您也必须将它们应用于站点级别。