最近老是出现asp.net在IIS中访问出错的问题,下面是遇到的问题:
1、网站中有很多的静态页面,静态页面都采用ajax调用数据,静态页面可以显示,handler文件无法执行;
2、查看IIS日志文件C:\WINDOWS\system32\LogFiles\W3SVC1\xxx.log中发现调用handler文件都是500错误;
3、查看系统事件查看器,具体描述如下:
事件类型: 警告
事件来源: W3SVC
事件种类: 无
事件 ID: 36
日期: 2012-8-20
事件: 8:43:42
用户: N/A
计算机: A4D084A5B511476
描述:
服务器无法加载应用程序 '/LM/W3SVC/1/Root'。错误是 '没有注册类别'。
有关此消息的详细信息,请访问 Microsoft 联机支持站点: http://www.microsoft.com/contentredirect.asp。
有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。
在网上搜了一些资料,经过验证该解决方案可行,该资源来自网络,具体执行步骤如下:
(1)检查系统的DTC服务(全名:Distributed Transaction Coordinator)是否已经启动,如果正常则直接执行第四步;
(2)如果没有启动DTC服务则,则启动服务。发现服务列表里没有这个服务,到c:\windows\system32下查找MSDTC目录,在c: \windows\system32\inetsrv 中有wamreg.dll和asptxn.dll,system32下也有msdtc.exe文件。说明msdtc 服务没有安装上;
(3)如果DTC服务未启动或启动错误的时候,执行命令msdtc -retsetlog;
(4)在CMD下执行以下命令:cd c:\windows\system32\inetsrv rundll32 wamreg.dll, CreateIISPackage regsvr32 asptxn.dll
我只执行了第四步,因为我的DTC服务已经启动。
(请注意,CreateIISPackage 区分大小写。灰色部分未验证是否可行)
这时候再刷新要运行的ASPX页面就可以正常显示了!!