游客发表
昨天下午三点十七分,错误公司内部CRM系统突然全线飘红。错误运维老张的错误钉钉头像在群里疯狂跳动,就一句话:"IIS挂了,错误报错一模一样。错误"
我远程连上去一看,错误事件查看器里密密麻麻全是错误
这不是错误第一次了。上个月隔壁项目组也遇到过,错误当时大家查了半天,错误最后发现是错误web.config文件里多了一个空格。对,就一个空格。XML解析器不认这个,直接把整个站点干趴下。当时那哥们脸都绿了,说这文件昨晚改完还好好的,今早一来就崩了。
IIS web core这个错误,说穿了就是IIS在读取配置文件时碰上了它不认的东西。最常见的触发点有三个:第一,web.config格式错误——你手滑改坏了或者某个编辑器自动加了BOM头;第二,应用程序池的托管管道模式不对,经典模式和集成模式混用,某些旧模块直接罢工;第三,权限问题——IIS_IUSRS组没有读取配置文件的权限,这在你把站点目录挪了位置之后特别容易发生。
但这次不太一样。老张说昨晚没人动过服务器,连Windows更新都没跑。我让他把applicationHost.config和web.config都导出来对比,结果发现站点根目录下的web.config文件大小变成了0字节。文件还在,内容没了。这就解释了为什么是500.19而不是500.21——IIS根本读不到任何有效配置,直接判定无效。
后来怎么解决的?从备份里恢复文件,5分钟搞定。但问题是,为什么文件会自己清零?查了磁盘空间,还剩2TB,排除写满的可能。看了一遍安全日志,没有异常登录记录。最后发现是某个杀毒软件在凌晨四点做了全盘扫描,把那个web.config当成了疑似威胁给隔离了——因为那文件里有一段加密的连接字符串,特征码命中了病毒库里的一个模式。
这事挺讽刺的。安全软件为了保护系统,直接把业务配置干掉,然后整个系统以最不安全的方式瘫痪——所有请求直接拒绝,连错误页面都懒得给你渲染完整的。
所以你要是遇到
最后说句实在的,IIS这玩意儿不像Nginx那么轻巧,但胜在跟Windows生态咬合紧密。你要是天天跟.NET打交道,跑不掉就得伺候它。出错了别慌,先看文件,再看日志,最后才动配置。顺序反了,你只会把问题越搞越大。
友情链接