w3wp.exe - 应用程序错误 应用程序发生异常 unknown software exception 的解决方法

w3wp.exe - 应用程序错误 应用程序发生异常
应用程序发生异常   未知的软件异常   (0xc06d007e),位置为   0x7c815e02   
    
  环境是:Windows2003   +   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方面的限制,或检查程序有无死循环之类的问题。

运行程序是提示应用程序发生异常 unknown software exception(0xc0000096),位置为0x02fe6818,大家可以参考下面的方法测试下
在控制面板的添加/删除程序中看看你是否安装了微软NET.Framework,如果已经安装了,可以考虑卸载它,当然如果你以后在其它程序需要NET.Framework时候,可以再重新安装。 

  另外,如果你用的是ATI显卡并且你用的是SP2的补丁(一些ATI的显卡驱动需要在NET.Framework正常工作的环境下)。这种情况你可以找一款不需要NET.Framework支持的ATI显卡驱动。 

  如果以上两种方法并不能完全解决问题,你试着用一下“IE修复”软件,并可以查查是否有病毒之类的。 

  〔微软NET.Framework升级到1.1版应该没问题了〕 

  〔还有一说〕 

   方法一: 

  微软新闻组的朋友指点:开始--运行:regsvr32 jscript.dll 

  开始--运行:regsvr32 vbscript.dll 

  不过没解决---但提供了路子-----一次运行注册所有dll 

  搜索查找到方法如下: 

  运行 输入cmd 回车在命令提示符下输入 

  for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1 

  这个命令老兄你慢慢输 输入正确的话会看到飞快地滚屏 否则……否则失败就是没这效果。回车后慢慢等(需要点时间1-2分钟) 都运行完再打开看 

   方法二: 

  这是个典型问题~~~~~引起这个问题的原因很多。一般来讲就是给系统打上补丁和更换内存、给内存换个插槽这3种方法来解决。[系统补丁只要到Microsoft Update网站在线更新就可以了] 

  造成这种问题的原因很多,不能单纯的下结论,尽量做到以下几点可能对你有帮助: 

  1。确保使用的是未修改过的软件(非汉化、破解版) 

  2。使用改软件时尽量不要运行其他软件。(这是个临时文件,可能某些软件也在使用临时文件夹,所以产生干扰) 

  3。把那些什么桌面工具,内存整理工具通通关掉(你至少有2个类似的工具在运行)” 

   处理方法: 

  运行regedit进入注册表, 在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks下,应该只有一个正常的键值"{AEB6717E-7E19-11d0-97EE-00C04FD91972}, 将其他的删除。 

  〔我个人的最后解决和看法〕 

  我今天尝试了多种办法,最后我发现问题出在微软的NET.Framework上面。我升级了这个软件,并打齐了补丁,短暂平安后,有出现“内存不能为read”的情况。后来我受上面文章的启发,卸载了微软的NET.Framework1.0和1.1,世界太平了。 

  另外:如果是打开“我的电脑”、“我的文档”等的时候出现上述情况,还有一种可能,就是你的右键菜单太臃肿了,此时只要清理右键菜单问题就解决了。 

   〔试验的结果〕 

  上面的方法,最管用、最彻底的方法是这个: 

  运行 输入cmd 回车在命令提示符下输入 

  for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1 

  【技巧】如果怕输入错误的话,可以复制这条指令,然后在命令提示框点击左上角的c:\,使用下面的“编辑-粘贴”功能就不容易输错了。在飞速滚屏完全静止之后,别着急启动其他程序,先耐心等一会儿,因为此时dll们还在找位置。直到你的指示灯不闪了再做别的.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值