手机版

IIS 7.5部署ASP失败的解决方案 网

时间:2021-09-09 来源:互联网 编辑:宝哥软件园 浏览:

最近,在部署ASP时。win7的IIS7.5上的NET4.0程序,我在浏览网页的时候发现错误代码是‘503’。但是我已经把应用部署到IIS了,怎么可能找不到页面呢?起初,我以为IIS7.5中没有安装ASPNET环境,在执行了几次之后,ASPNET _ regis-I还是原来的样子。结果,我检查到ASP.NET应用程序使用的应用程序池-DefaultAppPool停止了,所以我立即启动了它,但它立即返回到[Stop]状态:

然后,在查看[窗口事件查看器]时,我发现了以下错误:

发现的错误是“权限不足”,

然后我检查了一下【应用池】的【高级设置】中【流程模型】的【标识】设置为“应用池标识”。有关此设置的说明,请参阅://www . JB 51 . net/article/65315 . htm,如下所示:

应用程序池标识默认情况下,选择应用程序池标识帐户。应用程序池身份帐户是在应用程序池启动时动态创建的,因此该帐户对您的应用程序来说是最安全的。

也就是说,‘ApplicationPoolIdentity’帐户是系统动态创建的“虚拟”帐户(之所以是虚拟的,是因为在用户管理中看不到用户或用户组,在命令行输入net user也无法显示,但该帐户确实存在)

如何验证账户是否真的存在?打开任务管理器,观察:

w3wp.exe是iis进程,上图中突出显示的部分表示iis进程正在luckty帐户下运行(请注意,luckty是上图中的应用程序池名称)

好吧,搞清楚这个有什么用?

我们先做个测试。例如,如果我们在iis中创建新站点,主目录设置为c:\2\,应用程序池指定luckty,如图所示。

假设我们在站点的default.aspx.cs中编写了这样一行代码:

文件。appendall text(' 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 \应用程序池名称),然后确认,这次就可以了。

当然,除了使用‘IIS AppPool \应用程序池名’之外,在windows中还有一个特殊的用户组Authenticated Users,可以添加到TestDir的安全权限账户中,但个人认为不如‘IIS AppPool \应用程序池名’准确。

结论:IIS7.5的虚拟账号设计真的很棒。想想传统的IIS6,为了把同一个服务器上各个站点的权限分开(防止木马打扰),我们要创建一堆IUSER _ XXX和IWAM _ XXX的账号,指定密码,然后一个个分发,累死人!虚拟账户的设计让这种管理变得容易多了,不用担心密码太简单或者过期。那么,你还在等什么?升级到win7/win2008 R2!

另外:如果按照之前的做法,可以通过将[ID]设置为‘local system’来解决

版权声明:IIS 7.5部署ASP失败的解决方案 网是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。