IIS Insider

2004 年 5 月

IIS Insider

Internet 信息服务热门问答

作者:Brett Hill

本页内容
将 Web 站点的配置导出到一个文件将 Web 站点的配置导出到一个文件
基本身份验证的“令牌”被缓存基本身份验证的“令牌”被缓存
哪些 IIS 5 的缓存项目在 IIS 6 中仍然有效?哪些 IIS 5 的缓存项目在 IIS 6 中仍然有效?

将 Web 站点的配置导出到一个文件

问:

我们使用 IIS Manager 将 Web 站点的配置导出到一个文件。这种方法十分有效,而且我们可以查看最终得到的 XML 文件。但是,当我将文件导入到另外一台服务器的时候,Web 站点就不工作了。根据 Microsoft 的说明,IIS 6 的配置数据库应该可以移植到另一台计算机上,那么我们什么地方做得不对吗?

答:

IIS 6 的一个主要改进就是,XML Metabase(配置数据库)比 IIS 5 的二进制配置数据库更加易于管理。但是,在默认情况下,在利用 IIS Manager 导出一个 Web 站点的时候,被导出的配置数据库会包含某些特定的密钥,例如 IUSR 和 IWAM 密码,它们都利用本地计算机密钥进行了加密。所以,如果您将这些设置导入到另一台服务器,这些密钥将无法被目标服务器成功解密。

解决办法是在导出 Web 站点是提供一个密码(如图 1 所示):

Save Configuration to a File

图 1:将 Web 站点的配置导出到一个文件

当您在 IIS Manager 中选中希望导出的 Web 站点,选择“所有任务”,然后选择“将配置保存到文件”时,会显示本表单。在这种情况下,受保护的密钥将利用您提供的密码进行加密,而不是用本地计算机的密钥。然后,您可以提供一个密码,在目标服务器上导入配置数据库,这样,“密文”就可以被正确解密。

即便这样,您也仍然需要更新被导入的 Web 站点配置中所包含的专门针对源服务器的那些信息,例如匿名用户、 IP 地址或者被虚拟目录所引用的文件路径。

因此,上面的表单中的“使用密码加密配置信息”选项应该是一个“实现可移植”目的的思路。

返回页首返回页首

基本身份验证的“令牌”被缓存

问:

我们已经注意到,用户在被拒绝访问后仍然可以登录到我们的站点上。虽然最终他们还是被拒绝访问了,但是我们希望找出为什么会发生这种事情,以便更及时地拒绝他们的访问。

答:

这个问题一般出现在对 IIS Web 站点使用了“基本身份验证”的时候。当用户通过站点的身份验证的时候,会得到一个“令牌”,可以使用它执行对站点发起后续访问请求。但是,为了避免客户机系统为每一个向 IIS 服务器发出的请求都进行身份验证,并因此降低性能表现,IIS 会缓存令牌,缓存期限为 15 分钟。这是一个可以修改的参数,可以使用 UserTokenTTL 注册表设置设置该参数。参数的单位以秒计算,指出了令牌被缓存的时间期限。您可以根据需要,通过以下注册表键来降低或增加设置的值:

HKLM\System\CurrentControlSet\Services\Inetinfo\Parameters

.这个特殊设置仅适用于“基本身份验证”。“Windows 集成”(Integrated Windows)身份验证令牌不会被缓存。

返回页首返回页首

哪些 IIS 5 的缓存项目在 IIS 6 中仍然有效?

问:

在 IIS 6 中,http.sys 侦听程序具有一个内核模式缓存。在 IIS 5 中,该缓存不存在,但是 IIS 已经内置了它自己的缓存功能。IIS 5 中的缓存在 IIS 6 中仍然存在吗?或者它已经被 http.sys 所取代了?如果它仍然存在,那么这些缓存如何进行交互呢?

答:

Http.sys 是 IIS 6 的内核模式的 http 侦听程序,仅存在于 Windows Server 2003 之上。它没有内置一个响应缓存,所以可以直接从内核模式缓存交付内容。内核模式缓存速度非常快,而且需要较少的服务器管理开销;所以可以让缓存得到更有效的利用,可以极大提高吞吐量,同时降低服务器的负载。

正如您提到的,IIS 5 没有这种能力,但是它有自己的缓存(实际上存在数个缓存,但是出于简单起见,我们通常将它们作为一个整体进行谈论)。这些缓存在 IIS 6 中仍然存在,而且在 http.sys 缓存存在的情况下仍然有助于提高性能表现,因为并不是所有的内容都通过内核模式缓存进行缓存。例如,一个通过了身份验证的用户所请求的内容不会被 http.sys 所缓存,但是会被 IIS 6 的“用户模式”缓存所缓存。

因此,对您的这个问题的简单回答就是“是,IIS 5 中的用户模式缓存在 IIS 6 中仍然存在和被使用”。第二个问题与这两个缓存的具体交互方式有关,稍微有一点复杂。这两个缓存不会直接交互,相互之间不会就具体缓存了哪些项目直接进行交流。但是,您的脚本中还有一些可以配置的元素,而且需要在服务器上对缓存性能进行优化调整。

关于此问题有一篇不错的文章可供参考,文章题为:Web 和应用程序服务器的基础结构 - 性能和伸缩性. 我强烈建议您认真阅读该文章。


更多信息

请将您的问题提交给IIS Insider. 我们将挑选一些问题进行解答,并发布在今后的 IIS Insider 专栏中。

如果希望查看先前月份的 IIS Insider 专栏问答,请点击此处.

我们在 Microsoft 公司的全体同仁期望这些信息能够为您的工作提供宝贵的帮助。但是,使用本文所包含的信息所带来的风险将全部由您自行承担。本文中的所有信息都按照“原样”提供,对本文的准确性、全面性及针对某个特定目的的适用性、标题或非侵权不具有任何明示或暗示的保证。 Microsoft 公司也不对文中提及的任何第三方产品或信息进行授权、推荐、支持或者担保。Microsoft 公司不对使用文中的信息所带来的任何损害承担任何责任,包括直接、简介、特殊、偶然事故或其后果,即便是已经告知了发生这种损害的可能性。

返回页首返回页首