转载请注明文章出处:https://itlanyan.com/iis-503-service-unavailable/

前记

需要接手一个在Windows上运行的项目,于是很蛋疼的安装SQL Server等让人极度不适的软件。虽然安装配置MSSQL的过程也是槽点满满,但不是本文的重点。本文记录的是解决IIS的503问题,个人认为这种情况一般人不会碰到。

过程

IIS里新建一个站点,启动后打开浏览器输入”localhost”,直接出现404页面。马上意识到绑定了主机名的缘故,好吧我忍了,改完host用域名访问:503 service unavailable。本来就对IIS不熟悉,猝不及防的错误更让人一下蒙了,头脑中满是黑人问号:web程序有问题?ISS配置有误?相关支撑服务没启动?

想到用Windows开发的各种蛋疼,真想大骂一声在Windows上跑服务的都是傻逼。骂归骂,看在钱的面子上还要继续找解决办法。上Google找解决方案,满屏503的解决办法,没有好使的。要命的是巨硬系统的日志查看相当难用(有时候就没有),出现问题排查起来不仅困难重重,还会让人蛋疼到内出血。

打开IIS查看日志位置,打开文件夹后发现毛都没有,只好去搜一下IIS的可能日志文件路径。根据网上提示可能会在系统盘“\Windows\System32\LogFiles\HTTPERR”目录中,打开后确实存在日志文件,时间戳也能匹配上。文件不能直接打开(蛋疼!),复制到其他地方打开,对所有请求提示“503 poolid AppOffline poolname”(poolid和poolname和IIS配置有关)。所以原因是AppOffline,但这又是神马玩意?IIS里显示网站已经正常启动啊,请求后又告诉我offline,怎么肥事!

继续Google,各种方案不适用。连宝塔这种号称傻瓜式的站点管理程序都搬来安装上,重装和重启好几次IIS,问题依旧。最后打开Windows系统的日志查看程序,木有发现IIS提示出错,真是日了狗!快要放弃时逐个点开错误日志记录,无意间发现一串叫“User Profile Service”的错误。从描述上来看是普通的错误信息,感觉和IIS没啥联系:Windows 找不到本地配置文件,正在用临时配置文件让你登录。当你注销时,对此配置文件所作的更改将丢失。

就在准备清空日志,再次启动IIS看看有无具体日志生成的前一秒(太危险了!),无意间瞄到了错误的用户是IIS!要不是突然间的眼神一亮发现这微小的信息,今天的光阴就浪费在这个破IIS的错误解决上了!还有感叹巨硬的日志,IIS的致命问题竟然隐藏的这么深,还要伪装成”user profile”才透露出来,高明!high level!顶呱呱!

根据错误描述信息,Google “IIS 503 userprofile”,蹦出来的第一条搜索结果便是答案。果然是巨硬的博客,解决问题也比较直爽:启动IIS不加载用户配置,不加载即可。具体操作是打开IIS,在应用程序池里找到网站的程序池,找到加载用户配置一项,选择false。操作见下图:

原因

问题解决了。那为什么会出现用户无法加载呢?往事穿越,回想起过往种种,原来很早前用过IIS,系统自动生成一个www的用户。每次登陆Windows看到这个用户觉得很烦,琢磨以后用IIS机会太少,于是顺手删除了这个账户。没想竟然有被坑得死去活来的一天!

再次感叹神奇的巨硬,还有神奇的日志!

参考

  1. https://blogs.msdn.microsoft.com/tijujohn/2012/01/04/503-service-unavailable-and-load-user-profile/
  2. windows快速删除大量文件的办法