我在开发服务器上遇到过这种情况,我们所有的ASP.Net应用程序同时开始出现故障。
经过一些调查后,我们发现在1.1应用程序中调用应用程序设置,并且2.0应用程序中的连接字符串集合都失败了。配置文件具有值,但代码返回null。
经过一番头脑刮擦和搜索后,我想也许正在使用root web.config并忽略了网站。为了测试这个理论,我将其中一个站点所需的应用程序设置添加到了根web.config。这使网站能够正常运作。
在我证明我从root web.config中删除了设置并重置IIS之后。但是现在所有站点都在重新运行,即使是那些不依赖我之前添加到根web.config中的设置的站点。
任何人都可以解释为什么会发生这种情况吗?据我所知触摸根web.config导致它全部再次工作,但我不知道为什么或什么原因造成了问题。
编辑:这是在Windows Server 2003 SP2上的IIS 6.0上
答案 0 :(得分:5)
可能发生的情况取决于您运行的IIS版本。始终在ASP.NET中读取根web.config,但只有在IIS中将子目录定义为Web应用程序时,才会读取IIS子目录中的web.config文件。如果在不是应用程序目录的IIS子目录中创建web.config,则不会读取该目录。
我从未见过您所描述的内容,但我想如果正在运行的IIS进程的状态已损坏且无法识别app dirs,配置系统可能会错过子目录中的文件。
我认为这更有可能发生在IIS 5.x上,例如Win2000或XP,而不是发生在Server 2008或Windows 7上。