ASP.NET 模拟帐户

作者:vkvi 来源:ITPOW(原创) 日期:2010-5-5

ASP.NET 模拟帐户有两个作用

  • 一是避免使用公共的 ASP.NET 帐户(Windows 2000 中为 ASPNET;Windows 2003、2008 中为 Network Service),这在隔离虚拟主机权限时有用。
  • 二是指定特定的帐户以用于 SQL Server Windows 身份连接等其他一些应用。

可进行配置模拟帐户的几个地方

  • 一是 .NET Framework 的配置文件夹下的 machine.config、web.config。这通常在类似 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG 的文件夹下。
  • 二是在应用程序的目录下的 web.config 中。

如何配置

<system.web>
  <identity impersonate="true" />
</system.web>

以上是一个基本的帐户模拟配置,这样,它就是以当前网站的匿名帐户来读取某些资源了。

也可以指定用户名和密码

<system.web>
  <identity impersonate="true" userName="user" password="pass" />
</system.web>

这是明文的,也可以下载 aspnet_setreg.exe 这个微软的工具将密码存储在注册表中,这里就不出现明文的用户名和密码了,具体请参见 http://support.microsoft.com/kb/329290/zh-cn

上面两种配置可以实现 ASP.NET 模拟帐户的第二个作用,要实现第一个作用,则应该在 machine.config 中配置如下:

<location path="siteName" allowOverride="false" >
  <system.web>
    <identity impersonate="true" userName="user" password="pass" />
  </system.web>
</location>

多了一个 location,多个站点则可并列写多个 location。

  • path 为 IIS 中站点的名称,请使用英文。若为零长度字符串,则表示对所有网站有效。
  • allowOverride 表示不可覆盖,这样虚拟主机使用者就无法在其网站的 web.config 中取消模拟或改变模拟帐户。

这种配置 ASP.NET 虚拟主机的方法比较适用于 Windows 2000 和 Windows 2003,对于 Windows 2008,则完全没必要,请参见 Windows 2003、2008 中配置 ASP.NET 虚拟主机的方式

相关文章