http://bbs.faloo.com/doc/104990/1.html
当你访问博客园出现“Server Error in'/'Application.Runtime Error.”的错误时你知道这个错误的背后是什么吗?你也许会想博客园怎么不设计个定制错误页面这样的错误页面让访问者不知所措只能抱怨“服务器出问题了”。当出现这个问题时我急啊!真想站到互联网上拿着大喇叭对大家喊我刚更新了程序或者修改了web.config的设置 asp.net在进行首次编译在编译的同时还要处理大量的请求忙不过来只能拒绝请求实际的错误信息是"Server Too Busy"错误来自HttRuntime的Rej ectRequestInternal方法。你也许会说用customErrors页面处理一下啊可是HttRunti me 已经拒绝了这个请求重定向到defaultRedirect定制错误页面还是被拒绝结果就出现“S erver Error in'/'Application.RuntimeError.”错误。这个问题困扰我很长时间当更新程序(或者修改web.config的设置、应用程序池回收、 IIS重启)时就会出现这个问题尤其是访问高峰期要几分种才能恢复正常郁闷!要是在这时显示一个友好的错误显示页面那该多好啊!今天晚上更新程序时又遇到这个问题。我再次下决心要解决这个问题。
要解决问题首先要分析出为什么会出现问题。既然是HttRunti me抛出的异常那就从HttRuntime下手。怎么下手呢用强大的Reflector工具微软这点做的不错很多.NET类库都可以通过Re fl ector工具查看源代码。通过分析HttRunti me的源代码我找到了问题的原因这里我简单地描述了一下
做人要厚道转载请注明来自飞卢(faloo.com)
Re:定制“Server Too Busy”错误信息
接着就是异常的处理 向客户端浏览器显示异常信息调用Fini shReque st,在Fini sh中调用context.Re s p ons e.Rep ortRuntimeError(e, true)显示异常信息 Rep ortRuntimeError会根据web.config中的CustomErrors设置决定是否重定向到de faultRedirect。
当你设置CustomErrors的defaultRedirect来定制处理异常信息时 如果遇到"Server_too_busy"就麻烦了重定向到错误处理页面后又被HttpRuntime拒绝拒绝后又被重定向到defaultRedirect页面HttpRuntime 《———》HttpRuntime..... 似乎进入了一种恶性循环。原来问题有这么严重写文章之前我还没想到写到这我才发现。这样不停的来回CPU岂不累死当CPU累的不行时就随便抛出一个其他异常:)也就是“ServerError in'/'Application.Runtime Error.”这个异常我没找到在哪抛出的。难道在首次编译时 CPU占用很高与这个也有关系。我更新博客园服务器上的程序时要几分钟才能恢复正常而这时CPU基本是满负荷工作难道也是这个问题引起我想明天在访问高峰期测试一下就能得到证实。这似乎是设计者的一个疏忽 正确的做法应该是对于"Server_too_busy"异常不管用户是否设置了 defaultRedirect,都不应该去重定向到defaultRedirect而是直接向客户端发送异常信息这是一个很特殊的情况设计者在设计时可能没考虑到。
Re:定制“Server Too Busy”错误信息
在写文章之前我并没有发觉这个问题如此严重。但我想到了一个另类的解决方法既然发生"S erver_to o_busy"时 HttpRuntime不会处理任何请求那该Web应用程序中再怎么处理也是无济于事的 我们从其他地方找突破口发生"Server_too_busy"异常时重定向到de faultRe direct会带来严重的问题但却可以利用这一点把问题化解为解决方法这个解决方法就是将defaultRe direct设置为另外一个网站的地址既然这个网站拒绝处理请求那我把请求转给另外一个网站总可以吧 由另外一个网站来显示友好的错误信息这样不仅解决了定制“Server Too Busy”错误信息的问题而且可以减少对主网站的请求让主网站有更多的时间处理当前的任务。比如博客园现在就建立了一个sorry.cnblogs.com的站点将de faultRe direct设置为这个站点。这个方法另类吧!
有了这个方法我们以后就不怕"Server_too_busy"了可以轻松更新程序、修改web.config,只要将defaultRe dire ct的页面设计得让大家觉得等几分钟也不难受就行了。比如放一段美妙的音乐、笑话、搞笑图片、激情电影 当然过份的网站也许会放广告。
racknerd当前对美国犹他州数据中心的大硬盘服务器(存储服务器)进行低价促销,价格跌破眼镜啊。提供AMD和Intel两个选择,默认32G内存,120G SSD系统盘,12个16T HDD做数据盘,接入1Gbps带宽,每个月默认给100T流量,5个IPv4... 官方网站:https://www.racknerd.com 加密数字货币、信用卡、PayPal、支付宝、银联(卡),可以付款! ...
CloudCone 商家在以前的篇幅中也有多次介绍到,这个商家也蛮有意思的。以前一直只有洛杉矶MC机房,而且在功能上和Linode、DO、Vultr一样可以随时删除采用按时计费模式。但是,他们没有学到人家的精华部分,要这样的小时计费,一定要机房多才有优势,否则压根没有多大用途。这不最近CloudCone商家有点小变化,有新人洛杉矶优化线路,具体是什么优化的等会我测试看看线路。内存CPU硬盘流量价格...
对于一般的用户来说,我们使用宝塔面板免费版本功能还是足够的,如果我们有需要付费插件和专业版的功能,且需要的插件比较多,实际上且长期使用的话,还是购买付费专业版或者企业版本划算一些。昨天也有在文章中分享年中促销活动。如今我们是否会发现,我们在安装宝塔面板后是必须强制我们登录账户的,否则一直有弹出登录界面,我们还是注册一个账户比较好。反正免费注册宝塔账户还有代金券赠送。 新注册宝塔账户送代金券我们注册...