公司开发的某业务系统出故障了,于是通过VPN在家里直接访问该系统,结果系统器返回
Service Unavailable
--------------------------------------------------------------------------------
HTTP Error 503. The service is unavailable.
于是远程登录到服务器看个原因,重启了IIS网站,故障于旧,后来重启应用程序池后,系统似乎恢复正常,登录界面可正常浏览,但登录后加载了一些资源请求后,就返回HTTP ERROR 503了。
服务器的环境为:
系统:windows server 2008 r2
WEB应用服务:iis 7+.net framework 2.0
于是重启服务器,状况于旧,于是查看应用程序日志,大致就出现了一个警告和两个错误的消息。
如下警告一:
事件代码: 3005
事件消息: 发生了未处理的异常。
事件时间: 2011/4/17 14:16:39
事件时间(UTC): 2011/4/17 6:16:39
事件 ID: ddeccdde5e334b908687bf16d39e16be
事件序列: 14
事件匹配项: 1
事件详细信息代码: 0
应用程序信息:
应用程序域: /LM/W3SVC/2/ROOT-1-129474945965819063
信任级别: Full
应用程序虚拟路径: /
应用程序路径:###
计算机名: ###
进程信息:
进程 ID: 5008
进程名: w3wp.exe
帐户名: NT AUTHORITY\NETWORK SERVICE
异常信息:
异常类型: TypeLoadException
异常消息: 未能从程序集“System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类型“System.Security.Authentication.ExtendedProtection.ChannelBinding”。
请求信息:
请求 URL:
请求路径:
用户主机地址:
用户:
是否已经过身份验证: False
身份验证类型:
线程帐户名: NT AUTHORITY\NETWORK SERVICE
线程信息:
线程 ID: 4
线程帐户名: NT AUTHORITY\NETWORK SERVICE
是否正在模拟: False
堆栈跟踪: 在 System.Web.Hosting.ISAPIWorkerRequestInProc.Close()
在 System.Web.Hosting.ISAPIWorkerRequest.FlushCachedResponse(Boolean isFinal)
在 System.Web.Hosting.ISAPIWorkerRequest.EndOfRequest()
在 System.Web.HttpRuntime.FinishRequest(HttpWorkerRequest wr, HttpContext context, Exception e)
在 System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr)
在 System.Web.HttpRuntime.ProcessRequestNoDemand(HttpWorkerRequest wr)
在 System.Web.Hosting.ISAPIRuntime.ProcessRequest(IntPtr ecb, Int32 iWRType)
自定义事件详细信息:
错误一:
错误应用程序 w3wp.exe,版本 7.0.6002.18005,时间戳 0x49e023cf,错误模块 isapi.dll,版本 7.0.6002.18210,时间戳 0x4b806b3e,异常代码 0xc0000005,错误偏移量 0x00014a44, 进程 ID 0x%9,应用程序启动时间 0x%10。
错误二:
错误应用程序 w3wp.exe,版本 7.0.6002.18005,时间戳 0x49e023cf,错误模块 iiscore.dll,版本 7.0.6002.18210,时间戳 0x4b806ae9,异常代码 0xc0000005,错误偏移量 0x00010d1a, 进程 ID 0x1390,应用程序启动时间 0x01cbfcc701688307。
大致应该是asp.net进程的某些请求导致IIS出错,于是通过Google、Baidu之后,都未能解决该问题,甚至到国外的网站,说可能是ARR导致的,但我们没有用到IIS中的重定向啊,http://support.microsoft.com/?kbid=2281517 ,但试一试也不碍事,总得比不去解决好,但微软的指引依然是不能帮我解决我遇到的问题。
无助之际,查找了Windows更新日志,发现一个巧合的事情,2011年4月17日凌晨三点多的时候,Windows自动更新并安装了有十几个补丁,其中有IIS方面的漏洞,也一些kb开头的补丁,也就是说今天早上安装了补丁后就出了故障了。
想到之前个人电脑自动更新时也导致Xp下的IIS6出现无法启动的事,于是立即将其更新程序全部删除,重启计算机,一试,所有的问题都没有,没有Http Erro 503,也没有application error。
总结:
1、关闭Windows 自动更新程序,或改为手动安装,或选择性的更新程序。
2、打补丁可以使你的系统更加稳定、安全,但也可以让你的系统出现一些莫名其妙的事儿,让你丈二和尚摸不着头脑,所以一定要打补丁时要清楚打了哪些补丁,以便出现故障后可以还原
3、尽量关闭所有软件的自动更新功能,因为这或许将成为某软件的后门。