当前位置:首页 > 前端开发 > 正文

IIS部署网站红叉怎么解决,新建IIS站点是什么原因?

IIS管理器里网站和应用池显示红叉,绝大多数情况下是Windows Process Activation Service(WAS)服务没有运行,先把该服务启动并设为“自动”,再执行iisreset,红叉就能消失;之后新建IIS站点,在“网站”节点右键选择“添加网站”,填好名称、物理路径和端口绑定即可。

iis部署网站红叉怎么解决:先分辨红叉出现在哪一层

IIS管理器左侧连接树从上到下依次是服务器节点、应用程序池、网站,红叉可能出现在任意一层,处理思路完全不同,无论你遇到的是iis网站显示红叉还是应用池红叉,先别急着重装IIS,照着下面的方法排查,大多数情况都能自己搞定。

应用池红叉和网站节点红叉是一回事吗

应用池红叉意味着后台工作进程w3wp.exe没能正常启动,依赖它的所有站点都会跟着报错,网站节点红叉则更常见于管理界面与后台服务状态不同步,判断方法很简单:如果红叉只出现在网站节点上,而应用池是绿色的,那多半是IIS管理器刷新不及时,按F5刷新一下就能恢复,如果应用池和网站同时红叉,基本可以锁定是WAS服务或系统级配置出了问题。

最常见的元凶:WAS服务偷偷罢工

WAS(Windows Process Activation Service)是IIS的“总开关”,负责管理应用程序池的启动和停止,它一停,所有应用池都会变成红色,触发原因相当一部分是系统服务优化工具把WAS的启动类型改成了“手动”,或者杀毒软件主动拦截了IIS相关进程,检查方法:按Win+R输入services.msc,在服务列表里找到Windows Process Activation Service,确认状态是“正在运行”,启动类型是“自动”(据微软官方文档,WAS与W3SVC服务必须同时运行才能正常提供网站服务)。

手动修复红叉的三种实操路径

  • 路径一:在服务管理窗口右键WAS服务,选择“启动”,启动后再检查World Wide Web Publishing服务(W3SVC)是否也在运行,如果没运行,同样右键启动。
  • 路径二:以管理员身份打开命令行,依次执行net start was和net start w3svc,如果提示“服务已经启动”,再执行iisreset强制刷新IIS配置。
  • 路径三:如果服务启动过程报错,打开事件查看器(eventvwr.msc),在Windows日志→系统里找来源为WAS或IIS-W3SVC的错误条目,错误码0x80070005表示权限不足,0x80070002通常表示依赖服务缺失。

iisreset执行完毕后,过几秒回IIS管理器按F5,红叉应该会消失,如果还在,继续往下看。

配置隐患:站点ID冲突与管道模式不匹配

WAS服务重启后红叉依旧,那就要检查ApplicationHost.config文件了,文件位于C:WindowsSystem32inetsrvconfigapplicationHost.config,用记事本打开后,搜索site name="你的站点名",确认每个站点的id属性没有重复,ID冲突会导致IIS管理器显示异常,但实际请求可能还能响应,应用程序池的高级设置里,“托管管道模式”如果设置成“经典”,而项目是按“集成”模式开发的,应用池会反复崩溃并显示红叉,把管道模式改回“集成”,或者统一按项目实际要求调整。

IIS部署网站红叉怎么解决,新建IIS站点是什么原因? 第1张

修复红叉后,新建iis站点步骤详解

红叉解决后,新建站点就是下一个动作,很多人以为新建站点很复杂,其实核心就三步:填名称、指向物理路径、绑定端口。

新建iis站点步骤:从添加网站到绑定域名

  • 打开IIS管理器,选中左侧连接树里的“网站”节点。
  • 在右侧操作栏点击“添加网站”,或者右键“网站”选择“添加网站”。
  • 站点名称填项目名,比如layout-web,系统会自动创建一个同名应用池。
  • 物理路径指向网站根目录,例如D:wwwrootlayout-web,建议不要放在默认的C:inetpubwwwroot里,因为系统盘权限限制多,后续调权限麻烦。
  • 绑定类型选http,IP地址保持“全部未分配”,端口填80,如果80端口已被占用,先看后面的排除方案。
  • 主机名一栏,如果要用域名访问,填完整域名,比如layout.example.com;如果只是本地测试,留空即可。
  • 点击确定后,新站点出现在列表里,默认状态是“已启动”,如果显示“已停止”,右键选择“启动”。

物理路径与权限设置的关键细节

物理路径确定了,文件夹权限没给够,站点启动后访问会直接报403.14错误,正确操作:在文件资源管理器里右键网站根目录→属性→安全→编辑→添加→输入IIS_IUSRS→勾选“读取”权限→确定,如果站点需要写入文件(比如上传目录),还要额外勾选“修改”,相当一部分开发者在自己的电脑上怎么点都通,部署到Windows Server上就403,十有八九是漏了这一步。

端口、主机名与IP绑定的取舍

一台服务器上跑多个网站,绑定方式有讲究。

部署场景 绑定方式 关键点
单站点本地测试 IP全部未分配,端口80 浏览器访问localhost即可
多站点同IP 不同端口或不同主机名 端口用8080、8081,主机名用a.com、b.com
域名正式部署 主机名填完整域名 DNS解析要提前指向服务器IP
HTTPS加密站点 绑定类型选https,端口443 服务器需提前安装证书,HTTP会自动跳转

端口冲突最常见的案例是SQL Server Reporting Services或Skype占用了80端口,用netstat -ano | findstr :80查到占用进程PID后,去任务管理器关闭,或者干脆给站点换一个端口,但注意,非80端口对用户不友好,正式环境建议用主机名区分。

验证站点是否正常工作的检查清单

  • 本机浏览器打开http://localhost/,看是否出现站点首页。
  • 局域网测试:命令行输入ipconfig查服务器IP,用另一台电脑访问http://服务器IP/。
  • 域名测试:先ping 域名确认解析到服务器IP,再访问http://域名/。
  • 如果页面能打开但样式全乱,检查首页里引用的CSS和JS路径是不是用了绝对路径,导致资源请求去了错误端口。

红叉与新建站点过程中常见的连带问题

红叉修好了,站点建好了,不代表万事大吉,部署过程中还有几个高频坑,我直接列出来。

iis部署网站500错误与红叉的关联

红叉是服务层面的故障,500错误则是请求处理层面的故障,两者经常前后脚出现:红叉修好后,紧接着访问站点就报500,500错误子代码差别很大,500.19表示web.config或applicationHost.config读取失败,多检查配置文件格式和权限;500.21表示处理程序映射不匹配,常见于经典管道模式下跑ASP.NET项目,行业共识认为:处理500错误最快的方式不是猜,而是看事件查看器里的详细错误子代码。

静态资源能打开但动态页面报错

HTML图片能正常打开,aspx后缀的页面却报错,说明IIS本身没宕,问题出在应用程序池的.NET CLR版本或脚本映射上,检查应用池的“.NET CLR版本”是否选择了v4.0,托管管道模式是否选“集成”;再回到站点功能页,双击“处理程序映射”,确认ASP.NET相关的映射条目没有被禁用,如果你是部署PHP项目,还要确认FastCGI设置是否指向了正确的php-cgi.exe路径。

32位与64位应用程序池之争

项目里引用了32位原生DLL,应用池就必须在“高级设置”里把“启用32位应用程序”改为True,否则站点一启动就报503,应用池直接停止,反过来,纯.NET托管代码项目不需要开32位,保持默认False即可,这个设置经常被忽略,因为它藏在高级设置的第二页里,不熟的人根本找不到。


红叉问题的本质是IIS宿主服务或配置层面的瘫软,修复WAS服务能解决绝大多数场景;新建站点则紧紧围绕“名称、物理路径、端口绑定”三个核心点展开,权限和应用程序池配置是后续最容易踩的坑,把这两块理顺,IIS部署网站这件事就通了。

IIS部署网站红叉怎么解决,新建IIS站点是什么原因? 第2张

关于iis部署网站红叉和新建站点的高频问题

iis部署网站红叉但网站还能正常访问是怎么回事?

这是管理界面显示延迟或WAS服务状态异常但工作进程仍在运行的“假红叉”,刷新IIS管理器窗口,或者执行iisreset /restart观察是否恢复,如果重启后红叉消失且访问正常,说明只是界面不同步。

新建iis站点后访问出现HTTP 500.19错误怎么处理?

19表示配置文件读取失败,按三个步骤排查:先在事件查看器里看具体错误子代码和涉及的文件路径;再检查applicationHost.config和web.config的XML格式是否合法;最后确认站点物理路径对IIS_IUSRS组开放了读取权限,多数情况下是最后一个原因。

新建iis站点时端口被占用怎么办?

先用netstat -ano | findstr :80查看占用80端口的进程PID,再到任务管理器里定位对应进程,如果占用者是SQL Server Reporting Services或Skype,可以关闭该服务或改站点端口为8080;如果占用者是自己之前部署的站点,建议用主机名区分,而不是改端口,因为非80端口对用户访问不友好。

IIS部署网站红叉怎么解决,新建IIS站点是什么原因? 第3张

0