关于IIS网站访问时出现500.19错误。显示ApplicationHost.config xml语法错误解决

来源:互联网 发布:金蝶软件免费版 编辑:程序博客网 时间:2024/04/29 15:37
 

第一次诊断

===============

通过比较和测试我们认为是下面的问题导致了IIS不能访问

1.       IIS需要访问它的配置文件ApplicationHost.config。

但是这个文件经常会被其他进程占用导致IIS失败。

在事件日志中有IIS的WAS服务报错event ID 5172,错误代码0x80070003,代表The system cannot find the path specified.

同时在IIS管理器里面修改配置时,也常常会遇到报错说“ApplicationHost.config被占用”。

 

2.       我们用Process Monitor看到inetinfo.exe会频繁的写ApplicationHost.config

有时候每隔2,3秒钟就会写一次。这是文件被锁住的原因。

 

3.       Inetinfo.exe本身并不会写ApplicationHost.config,而是其他的进程在通过IIS6 兼容API在调用inetinfo.exe中的IIS Admin Service在写。

我们停止了服务器上所有的IIS进程池,发现还是有写文件的动作发生,说明很可能是IIS之外的应用进程。

 

第二次诊断

=============

1.       有KB http://support.microsoft.com/kb/946517 提到类似的问题。

请检查一下下面文件的版本,如果低于表中列出的值,请安装KB中提到的补丁。

Windows Server 2008 and Windows Vista Service Pack 1 x86

 

Date

Time

Version

Size

File name

19-Jun-2008

23:15

7.0.6001.22207

289,792

Adsiis.dll

19-Jun-2008

23:16

7.0.6001.22207

86,016

Iisext.dll

Windows Server 2008 and Windows Vista Service Pack 1 x64

 

Date

Time

Version

Size

File name

19-Jun-2008

23:44

7.0.6001.22207

330,752

Adsiis.dll

19-Jun-2008

23:46

7.0.6001.22207

105,984

Iisext.dll

C:\Windows\System32\inetsrv\Adsiis.dll

C:\Windows\System32\inetsrv\Iisext.dll-------查看-》Details-》copyright -》Microsoft Corporation.All rights reserved.

 

2.       我们可以用下面的办法找到服务器上面,所以通过inetinfo.exe访问ApplicationHost.config的进程。

任何用到IIS 6 management compatibility的进程都会加载这两个DLL (system32下运行以下两个命令)

Tasklist /M adsiis.dll

Tasklist /M admwprox.dl

请一定用管理员权限运行CMD.exe(开始-》命令提示符 右击-》以管理员身份运行),否则可能会得不到需要的信息。 

 

诊断结果

========

看到w3wp.exe和inetinfo.exe都是IIS的进程,而OWSTimer.exe是SharePoint的进程,故依然为sharepoint问题。

 

解决调试

=========

做下面的测试,以验证是哪一个进程在写ApplicationHost.config文件。 

1.       请让服务器重新上线。

2.       运行Process Monitor,等待出现对ApplicationHost.config的write操作。

最好麻烦您能收集一个屏幕截图,这样我们可以帮您确认一下是否有写操作出现。

3.       运行Services.msc,找到Windows SharePoint Services Timer服务,停止该服务。

4.       观察Process Monitor是否还会收集到写文件的动作。 

5.       如果还是有写操作,请运行inetmgr.exe

把所有的Application Pool都停止

6.       观察结果。 

如果发现Windows SharePoint Services Timer服务一停,写操作就停止,请尝试清一下该服务的缓存,看看问题是不是可以得到解决。

 

结果与解决

========

最终确认为sharepoint的Timer job过大导致

解决:

http://support.microsoft.com/kb/939308