我知道 IIS 7+ 使用 XML 配置文件而不是元数据库。我还知道,如果我编辑web.config
给定站点的文件,IIS 会自动检测更改并实施任何相应的配置更改。
但是,这也适用于服务器级applicationHost.config
设置文件吗?(通常位于C:\windows\system32\inetsrv\config
)具体来说,编辑此文件而不使用 IIS 管理器或appcmd
命令行实用程序是否安全?我在文档中找不到任何说明这样做可以或不可以的内容。
我很好奇,因为我需要将许多网站的绑定从一个 IP 更改为另一个 IP。进行全局搜索并替换配置文件中的 IP 地址要比在 GUI 中手动编辑几十个网站快得多。
答案1
还可以从这里查看这个答案:无法手动编辑 applicationhost.config
答案很简单,但不是那么明显:win2008 是 64 位,notepad++ 是 32 位。当您使用资源管理器导航到 Windows\System32\inetsrv\config 时,您正在使用 64 位程序来查找文件。当您使用 notepad++ 打开文件时,您正在尝试使用 32 位程序打开它。出现混淆的原因是,Windows 不会告诉您正在做什么,而是允许您打开文件,但当您保存文件时,文件的路径会透明地映射到 Windows\SysWOW64\inetsrv\Config。
因此,实际上,您使用 notepad++ 打开 applicationhost.config,进行更改,然后保存文件;但您不是覆盖原始文件,而是在 Windows\SysWOW64\inetsrv\Config 中保存它的 32 位副本,因此您没有更改 IIS 实际使用的版本。如果您导航到 Windows\SysWOW64\inetsrv\Config,您将找到刚刚保存的文件。
如何解决这个问题?很简单 - 使用 64 位文本编辑器,例如 Windows 附带的普通记事本。
答案2
具体来说,仔细编辑此文件而不是使用 IIS 管理器或 appcmd 命令行实用程序是否安全?
是的!如果您是机器上的管理员,您可以直接编辑 applicationhost.config 文件;这也是管理工具所做的全部工作。
如果你遇到麻烦,至少有 20 分钟的配置备份存储在\inetpub\历史默认情况下。
答案3
答案4
另一个有用的信息是:当您手动编辑 applicationHost.config 文件(如工具所做的那样)时,只有您更改了配置的应用程序才会被回收。IIS 实际上会为每个应用程序的配置拍摄快照,并且直到该应用程序发生更改时才会更新它。