在web.config中配置模拟:<identity impersonate="true" userName="testuser" password="1" />asp.net web应用程序默认不启用模拟,以aspnet用户运行,而当启用模拟后,在上面这个配置中是以testuser这个帐户运行程序,这我都明白。可是到底模拟有什么用呢?一般何时应用以及应用在哪里呢?期盼高手回复

解决方案 »

  1.   

    採用Impersonate的方式讓ASP.NET模擬成不同的 Windows 使用者。 設定方式如下: 第一種: [web.config] 依此種方式,ASP.NET 將會模擬藉由 IIS 傳送給它的使用者資料, 可能是驗證過的使用者或匿名的 Internet 使用者帳戶 (IUSR_machinename)。 第二種: [web.config] 第三種: [web.config] 依此種方式,ASP.NET 將會使用machine.config中設定的帳號來執行,預設是本機的ASPNET帳號。 
      

  2.   

    Web.config的Impersonation
    Web.Config中有一个<identity>元素,可以用于设置本应用程序的身份,即所谓“扮演(Impersonation)”,即应用程序扮演成IIS服务请求者或者某个固定用户的身份,访问本地或者外部资源时,资源以为是被扮演的用户在访问一样。扮演有两种可能:(1) 扮演IIS服务请求者,即浏览器客户端的身份在web.config中设置:              <identity impersonate="true" />ASP.NET进程将扮演http/https请求者的身份。具体是什么帐号,就跟IIS的安全性设定有关了:如果IIS允许匿名访问,那么缺省状态下,被扮演的将是Iuser_Machine帐号,即在IIS安全设置中用Enable anonymous access指定的帐号。如果修改过,那被扮演的就是修改过的帐号。如果IIS不允许匿名访问,那么浏览器请求者的身份肯定是一个Windows帐号,这个帐号就是被扮演的对象。(2)扮演一个固定用户设置扮演固定用户身份,需要为<identity>元素指定userName 和password两个 attributes:<identity impersonate="true" userName="MyServiceAccount"
                                 password="Str0ng!Passw0rd"/>显然,将password这样明码写在web.config中是不合适的。推荐的办法是使用Aspnet_setreg.exe工具,将这种信息加密后保存到注册表中。 无论扮演哪个帐号,微软都不推荐使用扮演,一方面是安全性问题(被扮演的帐号可能有一些程序并不需要的多余权限,可能被利用),另一方面是可伸缩性问题(Scalability),因为在访问SQL Server等资源时,无法利用连接池等手段