IIS7.0中使您的生活变得更加轻松的另一项主要变化是新的配置存储。元数据库现在是为向后兼容而提供的可选安装组件,它已经由XML配置系统取代。我知道您会说"但元数据库本来就是XML啊!"是的,确实如此。但它过于繁琐,而且不易于阅读(至少不易于人类阅读)。它已由更为灵活的XML系统所取代。与ASP.NET类似,IIS7.0使用.config文件-清晰、简单、便携且易读的.config文件。
转移到此格式意味着配置系统现在独立于计算机,不再像元数据库那样依赖于单个计算机。因此,您现在可以轻松地将配置系统移动到其他服务器上,只需简单地使用拖放或xcopy即可。
此新配置系统还利用IIS7.0中称为"共享配置"的新功能解决了Web场的难题。由于此新配置系统便于携带,因此您可在场内的所有节点中共享一个主.config文件。"共享配置"允许您从已知工作情况良好的预生产服务器上导出配置,然后在生产或"实时"环境中共享该配置。
导出.config文件时,必须提供加密密钥密码。这样做是为了保护.config文件,防止恶意Web服务器在非经授权的情况下尝试模仿您服务器的.config。
启用"共享配置"非常简单。在IIS管理器的服务器节点中,选择位于任务窗格"管理"部分下的"共享配置"。只需选中"启用共享配置",提供要共享(通常是UNC共享)的配置的物理路径,然后输入访问该物理路径所需的凭据并单击"应用"即可。找到.config文件时,将提示您输入加密密码。完成该过程后,重新启动IIS管理器以便其拾取新的.config。
新配置系统的结构与过去所使用的结构不同,让我们先了解一下基础知识。如图所示,IIS7.0的配置分为两个类别:服务器范围设置和站点特定的设置。所有服务器范围设置均存储在applicationhost.config内,它位于%systemroot%\windows\system32\inetsrv\config中。其中包括所有已安装的模块、服务器上的站点等。站点特定的设置存储在单独的web.config文件中。
服务器范围设置使用一个.config文件,而此服务器上的每个网站都使用各自独立的配置文件
如果您曾经使用过ASP.NET,则可能熟悉web.config文件。IIS7.0使用web.config文件来存储特定于各个网站的设置,例如站点的默认文档和应用程序设置,以及ASP.NET设置。这意味着您需要为服务器上的每个站点提供一个web.config文件。
站点的web.config文件位于该站点的物理路径中,例如%systemroot%\inetpub\wwwroot。此设计同样具有前面所述的便携优势,但它在站点级别使用。例如,您可以在测试服务器上简单地部署一个站点,然后通过拖放或xcopy将站点的web.config和应用程序文件移到生产服务器上。
无论何时导入或共享.config文件,均需注意特定于计算机的信息,如IP地址和驱动器盘符。IIS7.0通过支持OS环境变量(如%systemroot%)解决了该潜在问题。此外,确保安装在测试和生产服务器上的模块组相同。这将有助于避免不可预料的应用程序错误。如果web.config引用了尚未安装的模块,或者默认模块与自定义模块冲突,也会发生错误。