应用程序发生异常 未知的软件异常 (0xc06d007e),位置为 0x7c815e02
环境是:2003 + sp1 + ie6 + Framework 2.0 + vs 2005
在vs 里面调试没有问题,发布网站以后在iis上运行报错,找不到原因,网上搜索说可能是程序池里的不同版本的framework冲突,后来把全部的net全改成2.0版,一样报错。
解决办法:
点击“开始”-“控制面板”-“管理工具”-“组件服务”-“计算机”-“我的电脑”-“DCOM”选项,
选择其下的“IIS ADMIN SERVICE”,右健选择“属性”,找到“安全”,在“启动和激活权限”中编辑“自定义”,添加帐号“IWAM_*****”,
给该帐号赋予“本地启动”和“本地激活”的权限,重新启动IIS,(点“开始”-“运行”-“CMD”,点确定,然后运行IISRESET),
上面这个方法解决有点问题,没找到问题根源:请看下面:
按上述方法仍然无法解决问题,后来google搜索如下办法,不知道可行否,待查:
我已经找到问题的 答案了,是删除注册表里的两个键值就行了。
在msdn中是这样解释的:
关键词“实时调试”
实时调试是这样一种功能,当在 Visual Studio 外运行的程序遇到致命错误时,它自动启动 Visual Studio 调试器。实时调试使您能够在应用程序被操作系统终止之前检查错误。Visual Studio 调试器不需要在发生错误时是运行的。
如果在启用了实时调试的情况下发生了错误,将打开一个对话框,询问您是否要调试程序,以及要使用哪个调试器。
如果作为另一个用户运行的程序命中致命错误,则在调试器启动之前,将显示一个安全警告对话框。有关更多信息,请参见安全警告:附加到不受信任的进程可能会有危险。
您可以从“选项”对话框启用实时调试。有关更多信息,请参见如何:启用/禁用实时调试。
对于 Windows 窗体,您还必须在 machine.config 或 application.exe.config 文件中启用实时调试。有关更多信息,请参见如何:为 Windows 窗体启用实时调试。
在服务器上安装 Visual Studio 后,当发生一个未处理的异常时,默认行为会显示一个需要用户干预的“异常”对话框,用户要么启动实时调试,要么忽略该异常。这对无人参与执行可能是不需要的。若要配置服务器以在未处理的异常发生时不再显示对话框(安装 Visual Studio 之前的默认行为),请使用注册表编辑器删除以下注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger
在 64 位 操作系统上也删除以下注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\DbgManagedDebugger
注意
实时调试将对在本机应用程序中承载的托管代码不起作用,例如可视化工具。
注意
在 Windows Server 2003 或 Windows 2000 SP3(或更新版本)上安装 .NET Framework 后,只有在计算机重新启动后,实时调试才可用于在终端服务会话中通过受限用户帐户运行的进程。
解决w3wp.exe内存占用问题 w3wp.exe CPU占用100%在IIS6下,经常出现w3wp.exe的内存及CPU占用不能及时释放,从而导致服务器响应速度很慢。
解决内存占用过多,可以做以下配置:
1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。
2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。再设置当内存占用超过多少(如500M),就自动回收内存。
解决CPU占用过多:
1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。
2、设置应用程序池的CPU监视,不超过25%(服务器为4CPU),每分钟刷新,超过限制时关闭。
根据w3wp取得是那个一个应用程序池:
1、在任务管理器中增加显示pid字段。就可以看到占用内存或者cpu最高的进程pid
2、在命令提示符下运行iisapp -a。注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到pid对应的应用程序池。(iisapp实际上是存放在C:\windows\system32目录下的一个VBS脚本,全名为iisapp.vbs,如果你和我一样,也禁止了Vbs默认关联程序,那么就需要手动到该目录,先择打开方式,然后选“Microsoft (r) Windows Based Script Host”来执行,就可以得到PID与应用程序池的对应关系。)
3、到iis中察看该应用程序池对应的网站,就ok了,做出上面的内存或CPU方面的限制,或检查程序有无死循环之类的问题。
本文作者:佚名 来源:本站原创
CIO之家 www.ciozj.com 微信公众号:imciow