windows2008 IIS7 应用程序池标识导致的500错误

xcvzaq 2012-11-16 10:35:01
在我一个windows2008 web版的服务器上,当网站新打开的时候,就是说进程中没有网站对应w3wp.exe进程,第一次打开会出现500错误 内容为 无法读取web.config配置文件,但是刷新下页面就正常了。当进程被关闭后,再次访问该网站的时候,又会出现500错误。刷新即好。如果给网站根目录everyone权限则正常。

我在虚拟机搭建了2008的服务器进行了测试,我用process监控文件,测试发现如下情况:新建完网站,当网站对应应用程序池标识为ApplicationPoolIdentity的时候,每次打开网站的时候,会以IIS APPPOOL\aa用户的身份去 打开 我网站的根目录,aa是我的 手动建立的iis匿名帐号 ,网站根目录有aa权限,没有erveryone权限,导致IIS APPPOOL\aa打不开网站根目录,进一步导致500错误。

总结如下:iis每次第一次打开网站的时候,都会以应用程序池标识的 帐号去访问 网站根目录,因为网站根目录没有这个权限而导致500错误,而刷新之后 iis则会以匿名帐号去访问网站根目录,则正常。

因为安全原因,我只可能给网站根目录匿名帐号的 访问权限。

我得到了一种解决方法如下,开启。net。 应用程序池标识为 networkservice。网站程序根目录给 networkservice 和匿名帐号权限就可以正常访问。

请问,这算是bug么,还是必须给网站根目录erveryone权限,我该怎么做才能取消每次iis以应用程序池标识的身份去访问网站根目录。

在我只给网站根目录匿名帐号权限的 情况下,怎么才能不出现500错误。??
...全文
1627 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
只传精品 2015-02-12
  • 打赏
  • 举报
回复
2015年的今天 我也遇到这个情况了 还没解决
number321 2012-11-30
  • 打赏
  • 举报
回复
我的情况和有没有web.config没关系,第一次都会试图去找这个文件但是因为没有权限访问报错.然后不管这个文件是不是存在,都能正常访问. 之前是这样,后来不知道怎么回事就一直都不能访问了,重装IIS也还是一样.
xcvzaq 2012-11-29
  • 打赏
  • 举报
回复
引用 8 楼 number321 的回复:
我现在也郁闷了,不知道我改了什么设置,现在有问题的那个服务器,只要不加程序池标识对应的账户权限,就一直打不开.不再是第一次打不开的问题了. 不过我看了一下有问题服务器和正常服务器下的C:\inetpub\temp\appPools文件夹.假如程序池命名为testAppPool 正常服务器对应的程序池配置文件是在C:\inetpub\temp\appPools\te……
如果你网站根目录中有web.config文件,而又没有权限的话,就会一直提示错误,一般修改网站配置,会产生这个文件,如果这个文件不是必须的,删除他就可以了。你看看有没有。
number321 2012-11-29
  • 打赏
  • 举报
回复
我现在也郁闷了,不知道我改了什么设置,现在有问题的那个服务器,只要不加程序池标识对应的账户权限,就一直打不开.不再是第一次打不开的问题了. 不过我看了一下有问题服务器和正常服务器下的C:\inetpub\temp\appPools文件夹.假如程序池命名为testAppPool 正常服务器对应的程序池配置文件是在C:\inetpub\temp\appPools\testAppPool\testAppPool.config这个位置 而有问题对应的程序池配置文件是在C:\inetpub\temp\appPools\testAppPool.config这个位置
xcvzaq 2012-11-28
  • 打赏
  • 举报
回复
applicationHost.config 我看了 不知从何下手啊
xcvzaq 2012-11-28
  • 打赏
  • 举报
回复
引用 4 楼 number321 的回复:
好巧啊,我刚好和楼主遇到了同样的问题.就是如果不给网站根目录应用程序池标识对应账户的读权限,第一次打开就会因为无权限读取web.config导致打不开,从第二次开始就都正常了. 不过我遇到的这种问题似乎是在有些服务器上一直存在,另外一些服务器上又一直不存在
我又研究了下,有个服务器上,只要关闭w3wp.exe进程,或者重启应用程序池,或者重启服务器,第一次打开都会因为无权限读取web.config导致打不开,第二次就可以了。 但是我本地搭建的虚拟机上,又是另外一种情况,新建完网站第一次打开会有问题,然后重启应用程序池,重启服务器,重启整个iis,都不会有问题,重现这个错误的方法是,停止这个单独的网站,然后在启动它,打开就出现错误。 然后我对文件读写和注册表进行了监控,发现只要停止网站,然后在打开网站后的 第一次访问,w3wp.exe进程都会以应用程序池标识的身份用户去访问网站根目录和根目录下的web.config文件,不管有没有这个文件。只要访问被拒绝就报错。而第二次和以后的访问都不会去读取这个文件,重启iis,关闭w2wp.exe进程也不会读取这个文件,就没有错误。 w3wp.exe为什么要去读取web.config文件?我现在猜测如下:因为iis7.5修改了网站的配置,比如说修改了自定义错误什么的,都会导致在网站根目录生成web.config文件。w3wp.exe加载这个网站的时候,首先从某个地方判断这个网站的配置是否发生过更改,如果发生了更改,就以应用程序池身份读取网站根目录的web.config文件,然后做其他的,如果没有更改,就直接做其他的事情。一开始我推测这个地方不应该是在内存里面,因为我重启系统,重启iis,结束w3wp.exe后第一次访问都不会报错,所以我猜测是这个地方是某个文件或注册表,但是通过对文件和注册表的监控,又没有发现w3wp去什么地方读了什么。。。所以现在迷茫了啊。 这个问题折磨了我很久了啊。。。 谁有没有什么好的想法或思路啊。。 难道大家都没有这个问题,还是大家都给了网站根目录 应用程序池标识的的身份读取权限?
number321 2012-11-27
  • 打赏
  • 举报
回复
2楼说的元数据库应该指的是IIS6下面的Metabase.xml文件吧,在IIS7里面是applicationHost.config文件
number321 2012-11-27
  • 打赏
  • 举报
回复
好巧啊,我刚好和楼主遇到了同样的问题.就是如果不给网站根目录应用程序池标识对应账户的读权限,第一次打开就会因为无权限读取web.config导致打不开,从第二次开始就都正常了. 不过我遇到的这种问题似乎是在有些服务器上一直存在,另外一些服务器上又一直不存在
style_life 2012-11-26
  • 打赏
  • 举报
回复
引用 1 楼 qishine 的回复:
你想以特定帐户运行应用程序池,然后网站访问根目录用匿名帐户? 不知道元数据库中是否有可用的选项.
我是楼主~
style_life 2012-11-26
  • 打赏
  • 举报
回复
引用 1 楼 qishine 的回复:
你想以特定帐户运行应用程序池,然后网站访问根目录用匿名帐户? 不知道元数据库中是否有可用的选项.
我并不是想以特定账户运行应用程序池,一搬来说以ApplicationPoolIdentity或者networkservice这两个帐号中的一个运行应用程序池。 元数据库是什么 我不太了解 能不能多少介绍点,或者相关的 我好去查下资料。
qishine 版主 2012-11-19
  • 打赏
  • 举报
回复
你想以特定帐户运行应用程序池,然后网站访问根目录用匿名帐户? 不知道元数据库中是否有可用的选项.

6,873

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧