windows server 2008系统IIS发布的asp.net网站经常假死问题

经过测试,发现每天基本12点以后都会出现一到两次网站假死的问题,有时候上午也会出现。出现问题后访问不操作数据库的页面是正常的,但是有操作数据库的页面就一直处于假死,等待10-30分钟不定的时间会自动正常。另外出问题后只要回收服务器IIS上的应用程序池立马就正常了。
数据库是sql2005,服务器内存10G。为什么假死后只有访问数据库的页面假死,难道是数据库引起的吗,但有的地方运行的是同样的代码,但没出问题啊
求指教。。。

第1个回答  2015-03-30
我回答问题首先希望帮助到学习C#的后辈。

所以先分析原因。
你出现这个错误是因为你没有了解ASP.NET的工作原理。ASP.Net 和php,jsp ,asp等服务器语言一样 都是为了生成可供浏览器解析的页面,而可供浏览器解析的语言只有HTML。

1,如果你在aspx页面中插入一个asp:LinkButton 那么运行页面后 在浏览器中查看源代码你会发现这个标签实际被转为了一个<a>标签。
2,为什么你的写法不会转换呢?因为首先 传递给Literal1.Text 的值在asp.net中作为一段字符串被直接输出到浏览器中。那么你的写法到浏览器后源代码中仍然是一个asp:LinkButton 标签,而这个标签是无法被浏览器正确解析的。

解决办法:
知道了原因,那么如果非要按照你的写法去写,那么应该是这样的:
Literal1.Text = "<li>" + ((users)Session["users"]).Name.ToString() + "</li><li> </li><li><a ID='LinkButton1' onclick='LinkButton1_Click1'>注销</a></li><li> </li><li>信息修改</li><li> </li>";
但是当你修改完后发现点击注销按钮依然不能执行!为什么呢?
因为你的LinkButton1_Click1 事件并没有在asp.net中被解析为可供浏览器识别的js代码。

如何解决?

首先吐槽下你的写法实在另类, 但是依然可以实现。

在aspx页面中写一个asp:LinkButton按钮:
<asp:LinkButton ID='LinkButton2' runat='server' onclick='LinkButton1_Click1'>注销</asp:LinkButton>

运行页面,查看源代码 看看这个新加的注销按钮被解析为了什么html代码,大概如下
<a id="LinkButton2" onclick="xxxxx"></a>

将新加的linkbutton 设置不可见属性
<asp:LinkButton ID='LinkButton2' runat='server' visible="false" onclick='LinkButton1_Click1'>注销</asp:LinkButton>

重新修改后台代码
Literal1.Text = "<li>" + ((users)Session["users"]).Name.ToString() + "</li><li> </li><li><a ID='LinkButton1' onclick='xxxxx'>注销</a></li><li> </li><li>信息修改</li><li> </li>";
//也就是将标签的js事件绑定到那个隐藏的注销按钮事件上。
希望对你有帮助

...2008系统IIS发布的asp.net网站经常假死问题
所以先分析原因。你出现这个错误是因为你没有了解ASP.NET的工作原理。ASP.Net 和php,jsp ,asp等服务器语言一样 都是为了生成可供浏览器解析的页面,而可供浏览器解析的语言只有HTML。1,如果你在aspx页面中插入一个asp:LinkButton 那么运行页面后 在浏览器中查看源代码你会发现这个标签实际被转为了...

IIS频繁假死,然后把应用程序池回收一下,就能好了,然后过一会儿又不...
缩短IIS应用程序池回收时间,减少IIS假死现象 。解决方法:1.asp是否正确映射到’C:\\WINDOWS\\system32\\inetsrv\\asp.dll’2.一般来讲,是由于在同属iis(微软的WEB服务器平台)的应用程序池出现了某个站ASP代码错误所致,使得内存耗尽,检查代码本身的问题.可以隔离到单独应用程序池调试 3、减少应用程序池回收...

服务器iis假死的原因及解决方法
据官方资料说..win2003很快就要打这个补丁了..是iis6对access驱动支持不理像..也算是一个bug吧..由于服务器虚拟主机多..而且大多支持asp..如果一旦假死就无法运行..在多方面的资料查找下..找到了一个比较简单的方法..具体测试是通过了..iis6自带数据应用程序池..现在就利用他来解决假死..首先把...

IIS到底为什么总是假死???
一、原因:IIS应用程序池的设置问题 解决方法:Internet 信息服务(IIS)管理器->应用程序池->DefaultAppPool->右击属性 二、原因:独立进程的 内存堆戋消耗完了,IIS不能创建更多的进程工作空间来处理 解决方法:1. HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\W3SVC 2.在Parameters键下新建...

IIS应用程序池的设置问题解决IIS 假死状态
4、消耗太多内存时回收工作进程:全不选。(2、3、4项可能避免了在访问量高的时候强制回收进程可能引发的服务器响应问题,导致iis假死不响应)二、性能 只选中空闲超时20分钟。其他都不选。WEB园最大工作进程数为1(默认)。注意web园这里一定要保持默认,如果填写其他超过1的数字就会导致一些网站程序的后台...

如何处理IIS应用程序池自动停止,关闭,假死
1:没有打SP1补丁的时候会出现这个IIS6.0假死问题,但现在微软都在自动更新里面出补丁了,一般你打好最新补丁后是不会出现此问题了。(所以现在的IIS假死与这个关系不是很大)2:从IIS6.0开始CPU资源都在应用池里面限制了,不象以前的IIS.5。所以假死的池的缘故就是池被拉死,你在网站打不开的...

记一次 ASP.NET Core Web API 启动崩溃分析(上)
项目采用的是微信小程序后端Web API,基于 ASP.NET Core 7.0,部署在IIS 10.0中。启动假死的问题,让服务在某段时间偶尔出现应用假死的情况,而这种现象伴随着系统日志的异常和服务器性能指标的波动。通过对IIS请求日志的分析,发现回收前请求正常,回收时日志中断。服务重启期间大量请求时长超过1000ms,...

电脑经常假死几秒钟
查看任务管理器,可以发现是DLLHOST.EXE消耗了所有的CPU空闲时间,管理员在这种情况下,只好重新启动IIS服务,奇怪的是,重新启动IIS服务后一切正常,但可能过了一段时间后,问题又再次出现了。 直接原因: 有一个或多个ACCESS数据库在多次读写过程中损坏,微软的 MDAC 系统在写入这个损坏的ACCESS文件时,ASP线程处于BLOCK状态...

服务器死机的原因
服务器死机的原因如下:1、软硬件不兼容。三维软件和一些特殊软件,在有的微机上不能正常启动甚至安装,可能就有软硬件兼容方面的问题。2、某些软件程序不是标准化的,不能先加载并运行,而是先运行,会导致系统管理混乱。 Beta软件在某些方面不够稳定,使用后,可能会导致系统无法启动。3、在小内存的...

iis应用程序池服务停止的解决方法
确保系统已安装最新补丁,因为早期的IIS6.0假死问题可能与未打补丁有关,但现代IIS很少出现这种情况。IIS6.0开始,应用池对CPU资源有限制。如果池被过度使用,可能会自动关闭。解决方法包括: 避免严格限制CPU资源,但不建议,因为它可能导致服务器过载。 设置超出资源限制自动关闭,让网站在90秒内恢复...

相似回答