直接编辑IIS 7 applicationHost.configconfiguration文件

我知道IIS 7+现在使用XMLconfiguration文件而不是元数据库。 我也知道,如果我编辑给定站点的web.config文件,IIS会自动检测更改并执行任何相应的configuration更改。

但是,这是否也适用于服务器级别applicationHost.config设置文件? (它通常位于C:\ windows \ system32 \ inetsrv \ config中。)具体来说,仔细编辑此文件是安全的,而不是使用IISpipe理器或appcmd命令行实用程序? 我找不到任何文件中说可以或不可以这样做。

我很好奇,因为我必须将众多站点的绑定从一个IP更改为另一个。 简单地进行全局search并replaceconfiguration文件中的IP地址,而不是手动编辑GUI中的几十个站点会快得多。

另外从这里检查这个答案: 不能手动编辑applicationhost.config

答案很简单,如果不是那么明显的话:win2008是64bit,notepad ++是32bit。 当您使用浏览器导航到Windows \ System32 \ inetsrv \ config时,您正在使用64位程序来查找该文件。 当您使用记事本++打开文件时,您正尝试使用32位程序打开它。 出现混淆的原因是,Windows并不告诉你这是你在做什么,而是允许你打开文件,但是当你保存文件时,文件的path被透明地映射到Windows \ SysWOW64 \ inetsrv \ Config。

所以在实践中会发生什么事是你打开applicationhost.config使用notepad ++,进行更改,保存文件; 而不是覆盖原来的你保存在Windows \ SysWOW64 \ inetsrv \ Config,它的一个32位副本,因此你没有改变实际使用的IIS版本。 如果您导航到Windows \ SysWOW64 \ inetsrv \ Config,您会发现刚刚保存的文件。

如何解决这个问题? 简单 – 使用64位文本编辑器,例如Windows附带的普通记事本。

特别是,仔细编辑这个文件,而不是使用IISpipe理器或appcmd命令行工具是安全的吗?

是! 如果您是计算机上的pipe理员,则可以直接编辑applicationhost.config文件; 这也是Admin工具所做的一切。

如果遇到麻烦,默认情况下,至less20分钟的configuration备份将存储在\ inetpub \ history中

您将在IIS.NET上find对applicationHost.config文件的很好的介绍。 对于IISconfiguration模式中的所有元素也有一个全面的参考 。

这实际上是相当充分的logging:-)

另一个有用的知识点是:当您手动编辑applicationHost.config文件(如工具一样)时,只有您更改configuration的应用程序才会回收。 IIS实际上为每个应用程序获取configuration的快照,并且不会更新它,直到对该应用程序进行更改。