我们有许多网站在运行,它们的 web.config 文件中有大约 8 个处理程序映射。不幸的是,每次添加新映射时,它们都会被复制到各个网站。
现在是时候将它们从所有 web.config 中取出并放入服务器的处理程序映射中了。
如果我将映射添加到服务器,而该映射仍存在于 web.config 中,则当您浏览该站点时,IIS 会抛出错误。我这里有几十个 web.config 需要编辑,每个大约有 10 个映射。
有没有办法将这些映射添加到服务器,而不必手动编辑每个 web.config 文件?否则,当我进入每个文件并删除处理程序时,每个站点都会停机几分钟。
谢谢!
答案1
如果您手动执行此操作,您真的别无选择。即使您一次只通过 UI 进行一个处理程序映射,您也必须同时安装站点和全局处理程序(尽管很短暂),或者删除本地站点处理程序然后重新添加到全局设置中。
您当然可以使用以下命令编写脚本appcmd.exe
:
http://www.iis.net/ConfigReference/system.webServer/handlers
例如:
要从网站中删除处理程序(我使用默认网站作为示例)-
appcmd set config "Default Web Site" -section:system.webServer/handlers /-"[name='MyHandler']"
要将处理程序添加到全局或“APP HOST”配置:
appcmd set config -section:system.webServer/handlers /+"[name='MyHandler',
path='*.mything',modules='MyApp.MyHandler',preCondition='integratedMode',
resourceType='Unspecified',verb='GET,HEAD,POST']"
/commit:apphost
我把上面的命令分成四行只是为了使其更易读,但实际上它应该只有一行。
使用脚本意味着您的中断时间将在一分钟左右而不是几分钟。