将自己很早以前做的一个asp.net网站从自己的笔记本上迁移到公司电脑上,在作好相关配置后,打开网站首页,出现HTTP500错误,上网查了发现这是服务器内部错误。
接着我查看了下系统事件日志信息,发现了错误:
服务器无法加载应用程序 '/LM/W3SVC'。错误是 '找不到指定的元数据'。
根据这个错误信息,在http://www.cnblogs.com/jacklaw/archive/2008/07/02/1234172.html找到了解决方案:
在VS2005下新建的web services ,如果保存在本地磁盘上,可以测试(用的是其他端口,不是80),但没法运行,如果是保存在本地IIS上,测试、运行都没法进行。在事件查看器中发现警告“服务器无法加载应用程序 '/LM/W3SVC'。错误是 '找不到指定的元数据'。”,在网上找到蓝色随想的“完美解决IIS 服务器无法加载应用程序 '/LM/W3SVC/1/ROOT'。错误是 '没有注册类别”(http://www.cnblogs.com/BlueThinking/archive/2007/01/08/425266.html),顺利解决。
现象:
浏览ASP页面提示 500内部错误
事件查看器中:
[1]:
服务器无法加载应用程序 '/LM/W3SVC/1/ROOT'。错误是 '没有注册类别'。
有关此消息的详细信息,请访问 Microsoft 联机支持站点: http://www.microsoft.com/contentredirect.asp。
有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。
[2]:
无法启动 MS DTC 事务管理器。
有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。
[3]:
MS DTC 事务管理器启动失败。LogInit 返回错误 0x2。
有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。
[4]:
找不到 MS DTC 日志文件。在确认所有由 MS DTC 协调的资源管理器不具有“不确定”状态的事务
之后,请运行 msdtc -resetlog 创建日志文件。
有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。
我的运行环境:
WinXP Pro SP2;
解决办法:
[1]:
检查你的DTC服务(全名:Distributed Transaction Coordinator)是否可以正常启动,如果正常的话
请你跳过此步骤;如果出错,无法正常启动,请在开始菜单的运行中 运行:msdtc -resetlog
以创建 日志文件。
如果运行这个命令没出错 请跳过下面这行字。
如果运行这个命令出错请转到本文的下半部分的这个地方开始看。(==== 以下部分是网上重新找的资料 (如果执行上面步骤仍然不行,请继续) ==)
重起机器,检查IIS是否可以正常使用,若不行继续。(可以不重启)
[2]:
在CMD下执行以下命令:
cd %windir%\system32\inetsrv
rundll32 wamreg.dll, CreateIISPackage
regsvr32 asptxn.dll
重起机器,我的问题到这步已经可以完美解决!
在做完了上面的步骤后,我还出现了另一个问题:访问IIS元数据库失败
于是上网搜了下,找到答案:http://blog.csdn.net/lgg228tao/article/details/4156709
2、输入 aspnet_regiis.exe -i
稍等片刻,注册成功就解决问题了。
接着还会出现“未能创建 Mutex”的问题
解决方法:
1、先关闭你的VS2005。
2、打开 C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files 找到你刚才调试的程序的名字的目录删除它。
3、关闭IIS服务器,重开一次。
4、用IE浏览一下你的程序,问题解决。
“/test”应用程序中的服务器错误。
——————————————————————————–
访问 IIS 元数据库失败。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Web.Hosting.HostingEnvironmentException: 访问 IIS 元数据库失败。
用于运行 ASP.NET 的进程帐户必须具有对 IIS 元数据库(如 IIS://servername/W3SVC)的读访问权。有关如何修改元数据库权限的信息,请参见 http://support.microsoft.com/?kbid=267904。
源错误:
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
经过第一种方法调试 结果ok
另一方法:
错误提示:
访问 IIS 元数据库失败。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Web.Hosting.HostingEnvironmentException: 访问 IIS 元数据库失败。
用于运行 ASP.NET 的进程帐户必须具有对 IIS 元数据库(如 IIS://servername/W3SVC)的读访问权。有关如何修改元数据库权限的信息,请参见 http://support.microsoft.com/?kbid=267904。
源错误:
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。 |
到此,网站完全正常了!
错误分析:
因为本人安装vs2005的时候是先安装vs2005然后再安装iis的,所以在这种情况下用于运行 ASP.NET 的进程帐户必须具有对 IIS 元数据库的读访问权。然而我安装顺序不对所以就没法访问。
解决办法:
1 开始->程序->Microsoft .NET Framework SDK v2.0->SDK 命令提示
2 输入 aspnet_regiis.exe -i
3 关闭VS2005,打开C:/WINDOWS/Microsoft.NET/work/v2.0.50727/Temporary ASP.NET Files 删除刚才调试的目录
4 重起IIS,问题解决。
赫赫,问题其实很简单,只是安装的顺序不对罢了。这是因为在XP下先安装了Visual Studio2005,再安装IIS,下次要注意了。