遇到这个问题别慌,这篇不整虚的,直接给你三个能救命的排查步骤。看完你就知道为什么你的IIS还在转圈,以及怎么快速让它跑起来。
那天晚上九点半,我坐在工位上盯着屏幕,心里那叫一个堵得慌。客户等着上线,我的本地测试也通过了,可一进浏览器,全是那个该死的“网站建设者”页面。说实话,第一次搞 IIS部署网站提示建设中 这个问题,我整个人都懵了,脑子里一团浆糊。不是代码错,也不是端口被封,它就静静地在那儿嘲笑我。后来复盘才发现,全是些细枝末节的小事,差点让我崩溃。
首先得查查应用程序池,这玩意儿就像是网站的发动机,发动机没着车,车能动吗?我当时没注意,新建的网站直接用了默认的配置。很多人不知道,默认的 .NET CLR 版本可能是 v4.0 甚至是 v2.0,如果你的项目是 v4.5 或者更高级,或者甚至是纯静态的 HTML,设置错了就会出幺蛾子。你要进 IIS管理器,左边找到应用程序池,看看你的网站关联的那个池,右击看“高级设置”。这里有个“托管管道模式”,如果你的代码里用了集成模式,却选了经典模式,或者反过来,都可能报错。我当时就是这里搞混了,改回集成,重启池,刷新页面,结果还是那个“建设中”。这说明还得往下挖。
接着就是权限问题,这是最让人头疼的,也是最容易忽略的“粗糙感”来源。Windows 的系统权限有时候霸道得很。你的网站文件夹,比如 C:\inetpub\wwwroot\mysite,得给 IIS_IUSRS 这个用户组读写的权限。我在给文件夹授权的时候,手抖漏掉了一个子文件夹,导致静态资源加载不出来,页面结构虽然还在,但浏览器识别到异常,有时候就会返回那种通用的错误页,甚至有时候伪装成建设中。别嫌麻烦,右键文件夹-属性-安全,点编辑,把 Everyone 或者 IIS_IUSRS 加上完全控制试试,虽然从安全角度说这不太规范,但作为排查手段,这招特别管用。记得我之前就是少勾了一个“读取”的复选框,找了半天日志才发现,那种懊恼感,真想把键盘砸了。
还有一个坑,就是默认文档的顺序。IIS 默认是找 default.aspx、index.html 这些文件的。如果你的主文件叫 home.php 或者 index.htm,而默认文档列表里没有它,IIS 就会一脸懵逼。这时候它既不知道去哪找主页,也不愿意报错,就给你扔个默认的欢迎页,看着像建设中,其实是它“迷路”了。你要进网站属性的“默认文档”,把自己的文件名加进去,往上挪到第一位。这步操作看似简单,但在大批量部署时,很容易因为复制粘贴模板时没改名字而出错。
最后,别忘了刷新 DNS 缓存或者清理浏览器缓存。有时候服务器明明已经修好了,但你浏览器里还存着旧的“建设中”页面记忆。Ctrl+F5 强制刷新一下,或者换个浏览器试试,往往能柳暗花明。我那次就是试了火狐,发现居然好了,才反应过来是 Chrome 缓存太顽固。
搞技术就是这样,别总想着一步登天。这些看似低级的错误,每次遇到都让人抓狂,但解决后的那种爽感,也是真的。多去查日志,多看 IIS 管理器里的细节,别放过任何一个红色感叹号。记住,IIS部署网站提示建设中 不是什么绝症,通常只是配置上的小感冒。按我说的这几点,一步步排查,大概率能治好。如果还不行,那大概率是服务器底层权限或者防火墙的事儿,那时候再去找网管或者云服务器厂商售后,别自己瞎折腾把系统搞崩了。干活细心点,比什么教程都管用。