IIS 7.5 部署ASP.NET失败的解决方法
近日在win7的IIS7.5上部署ASP.NET4.0 程序时,发现浏览网页都出现错误代码为"503“的错误,但是我已经将对应用程序部署到IIS上了,怎么会出现找不到页面的情况呢?开始以为是ASP.Net 环境没有安装到IIS7.5中,执行了几遍ASPNET_REGIIS -i都还是一样,结果查看ASP.NET应用程序使用的【应用程序池】-DefaultAppPool停止了,于是我马上启动,但是马上它有恢复成【停止】状态:

于是,查看【windows事件查看器】发现如下错误:

发现错误是“没有足够的权限”,

于是看了一下【应用程序池】的【高级设置】中的【进程模型】的【标识】设置的是“ApplicationPoolIdentity”,对于此设置的说明,参考了:https://www.jb51.net/article/65315.htm如下:
ApplicationPoolIdentity – 默认情况下,选择“应用程序池标识”帐户。启动应用程序池时动态创建“应用程序池标识”帐户,因此,此帐户对于您的应用程序来说是最安全的。
也就是说"ApplicationPoolIdentity"帐号是系统动态创建的“虚拟”帐号(说它是虚拟的,是因为在用户管理里看不到该用户或用户组,在命令行下输入net user也无法显示,但该帐号又是确实存在的)
如何验证该帐号确实是存在的的?打开任务管理器,观察一下:

w3wp.exe即iis进程,上图中高亮部分表明该iis进程正在以帐号luckty运行(注意这里的luckty即为上图中的应用程序池名称)
好了,搞清楚这个有什么用?
先来做一个测试,比如我们在iis里新建一个站点,主目录设置为c:\2\,应用程序池就指定刚才图中的luckty
假如我们在该站点的default.aspx.cs里写入这样一行代码 :
File.AppendAllText("C:\\TestDir\\1.txt",DateTime.Now.ToString());
前提是c盘必须先建一个目录TestDir,同时除Administrator,System保留完全控制权外,其它帐号的权限都删除掉
运行后,会提示异常: 对路径“C:\TestDir\1.txt”的访问被拒绝。
原因很明显:该站点运行时是以应用程序池(luckty)对应的虚拟帐号运行的,而这个虚拟帐号不具备c:\TestDir的访问权限
这种情况在web服务器(iis6)安全配置中很常见,比如我们把图片上传目录,常常放在主目录之外,同时以虚拟目录形式挂于站点之下,另外在IIS6中不指定该目录任何执行权限 ,这样即使有人非法上传了asp/aspx木马上去,也无法运行搞不成破坏!
言归正传,要想让那一行测试代码正常运行,解决办法很简单,把虚拟帐号的权限加入文件夹安全权限中即可,但是问题来了:这个虚拟帐号我们是不可见的,如果你直接添加名为luckty的用户到文件夹安全帐号里,根本通不过(提示找不到luckty用户),说明这个虚拟帐号名称并不是"luckty"

关键:手动输入 IIS AppPool\luckty (即IIS AppPool\应用程序池名),再确定,这回ok了.

当然除了用"IIS AppPool\应用程序池名"外,windows内部还有一个特殊的用户组Authenticated Users,把这个组加入TestDir的安全权限帐号里也可以,不过个人觉得没有"IIS AppPool\应用程序池名"来得精确.
结束语:
IIS7.5的虚拟帐号设计确实很棒,想想传统IIS6的时候,为了把同一服务器上的各站点权限分开(以防止木马捣乱),不得不创建一堆iuser_XXX,iwam_XXX帐号并指定密码,再一个个站点分配过去,累死人!而虚拟帐号设计则让这类管理轻松多了,也不用担心密码过于简单或过期问题。So,还在等什么,赶紧升级到win7/win2008 R2吧!
另外:如果沿用之前的做法,可将【标识】设置成"LocalSystem"亦可解决
相关文章
win2003 IIS虚拟主机网站防木马、权限设置、安全配置整理
参考了网络上很多关于WIN2003的安全设置以及自己动手做了一些实践,综合了这些安全设置文章整理而成,希望对大家有所帮助,另外里面有不足之处还请大家多多指点,然后给补上,谢谢2012-01-01
Windows server 2019搭建证书服务器的实现步骤
本文将指导您如何使用Windows Server 2019搭建证书服务器,涵盖了安装证书服务、配置证书以及管理证书等步骤,具有一定的参考价值,感兴趣的可以了解一下2023-10-10
Windows Server 2019 组策略的配置与管理(基于域的组策略与示例)
这篇文章主要介绍了如何配置基于域的组策略,包括在AD域中创建组策略,配置基于域的组策略,通过组策略统一管理域中的计算机和用户,需要的朋友可以参考下2023-05-05
windows server backup 2008/2012的多任务备份计划
最近有看到有人经常提问server backup 2008/2012怎么做周备份、月备份之类的,所以特发此文章以尽量帮助大家,用windows server backup来解决备份问题,而不用购买使用symantec backup exec来解决数据备份,当然backup exec很专业,支持远程备份,磁带备份等功能2023-06-06
无法读取配置节 system.serviceModel 因为它缺少节声明的解决方法
无法读取配置节 system.serviceModel 因为它缺少节声明的解决方法,需要的朋友可以参考下2012-12-12
服务器完美设置,支持asp php cgi jsp asp.net mysql!
服务器完美设置,支持asp php cgi jsp asp.net mysql!...2007-10-10


最新评论