主要是web访问的时候,在有的服务器上需要在web目录ACL中加入IUSR_MachineName 才能访问,有的则不需要,这是什么原因?(IIS中都启用了匿名访问)

解决方案 »

  1.   

    在IIS 6/7中,ASPNET账户被替成Network Service。IIS 7中,如果使用的是默认的Network Service,那么ASP.NET程序能访问的资源都是受Network Service限制的,这个账户能访问什么资源,ASP.NET程序才能访问资源。Network Service在默认情况下,是可以读写IIS wwwroot文件夹下的所有文件以及在ACL的控制下来访问其他文件夹。 
    ASP.NET程序部署到付费空间上后便不能创建文件了。服务器在machie级别定义了CAS,限制所有运行在这台机器上的ASP.NET不能进行文件操作。目的是为了保护服务器的安全。 
    COM组件的访问是需要配置Network Service权限的 
    不能添加权限,可在config里impersonate模拟 IIS 验证的帐户或用户 
    <identity impersonate="true"  userName="操作系统用户" password="用户密码"/> 
      

  2.   


    谢谢,其实我最想知道的是,如果Web应用程序安装在非wwwroot目录下,根据什么规则添加目录权限,可以正常访问网站(包含付费空间在machine级设置的权限)?我的理解是(不一定对)如果web.config没有配置<identity>节,则给Web目录加入 Network Service/ASPNET 用户
    如果<identity impersonate="true" userName="操作系统用户" password="用户密码"/> 
    则给Web目录加入“操作系统用户”
    如果仅<identity impersonate="true"> 且启用了匿名访问,则加入匿名账号(一般就是IUSR_MachineName)
      

  3.   

       LocalSystem   账户   LocalSystem是预设的拥有本机所有权限的本地账户,这个账户跟通常的用户账户没有任何关联,也没有用户名和密码之类的凭证。这个服务账户可以打开注册表的HKEY_LOCAL_MACHINE\Security键,当LocalSystem访问网络资源时,它是作为计算机的域账户使用的。   举例来说,以LocalSystem账户运行的服务主要有:WindowsUpdate   Client、   Clipbook、Com+、DHCP   Client、Messenger   Service、Task   Scheduler、Server   Service、Workstation   Service,还有Windows   Installer。   Network   Service   账户   Network   Service账户是预设的拥有本机部分权限的本地账户,它能够以计算机的名义访问网络资源。但是他没有Local   System   那么多的权限,以这个账户运行的服务会根据实际环境把访问凭据提交给远程的计算机。Network   Service账户通常可以访问Network   Service、Everyone组,还有认证用户有权限访问的资源。   举例来说,以Network   Service账户运行的服务主要有:Distributed   Transaction   Coordinator、DNS   Client、Performance   Logs   and   Alerts,还有RPC   Locator。   Local   Service   账户   Local   Service账户是预设的拥有最小权限的本地账户,并在网络凭证中具有匿名的身份。Local   Service账户通常可以访问Local   Service、Everyone组还有认证用户有权限访问的资源。   举例来说,以Local   Service账户运行的服务主要有:Alerter、Remote   Registry、Smart   Card、SSDP,还有WebClient。   简单说明:Local   system   :本地系统用户,   个人电脑通常选择这个用户 Network   service   :网络服务用户,   通常需要远程连接的都使用这个 Local   Service   :本地服务 另外还有一个要求输入用户名密码的那个用户是域用户,这个是做集群的时候选择的登陆方式
      

  4.   

    之间的关系就是
    IUser_MachineName是asp运行的帐号,
    ASPNET是xp iis5.1 中iis运行的帐号
    Network Service是iis6运行asp.net的帐号,
    在IIS 7.0中IUSR内建帐号替代了IUSR_MachineName帐号在iis6的asp.net2.0网站上,默认情况下,是不用设置ACL为iuser_的
      

  5.   

    在本地机器开发的时候,确实不需要配置ACL
    但放到服务器上,有时候不加入IUSR...确实无法访问网站
    不知道是什么原因
      

  6.   

    <identity impersonate="true"  userName="操作系统用户" password="用户密码"/>  请问:操作系统用户和用户密码怎么填???