浏览器地址栏里敲下localhost,执行只显回车,示代页面没有渲染出动态内容,执行只显取而代之的示代是一坨白底黑字的ASP源码。变量声明、执行只显Response.Write、示代If...Then,执行只显一行行摊在眼前,示代像被扒光了扔在马路中间。执行只显
这不是示代什么新鲜事。我见过太多人栽在这上面。执行只显前两天一个同事还拿着笔记本过来,示代屏幕上的执行只显代码跟教科书似的,但就是示代不动。他说“我明明装了IIS啊”。执行只显对,装了IIS,但没装ASP支持模块。Windows默认的IIS安装只带静态文件服务,ASP那部分得手动勾选。控制面板→程序→启用或关闭Windows功能→Internet Information Services→万维网服务→应用程序开发功能→ASP,这一串路径,少走一步就白搭。
另一个常见坑是应用程序池设置。IIS 7之后的版本默认采用集成模式托管管道,ASP脚本需要经典模式才能正确处理。右键应用程序池→基本设置→托管管道模式,切换到“经典”。这个细节藏在配置面板的第三层菜单里,不熟悉的人根本找不到。改完还得记得重启应用程序池,不然设置不生效,页面照样把源码吐给你看。
还有个容易被忽略的点:文件扩展名。有些人把ASP代码写进.html文件里,浏览器当然不会执行。服务器只对.asp或.aspx后缀的文件做脚本解析。你换成.html,IIS直接当静态资源返回,内容原封不动送到浏览器。这个错误低级但高频,尤其是从别的语言转过来的新手,习惯了.html里嵌代码的方式。
权限问题也常导致类似现象。如果网站目录的匿名访问凭证没有读取权限,IIS可能不会执行脚本,而是直接把文件作为下载或显示内容。检查一下IIS管理器里“身份验证”设置,匿名身份验证用的账户有没有NTFS权限。有时候你把站点文件夹放在C盘根目录下,UAC一拦,权限就乱了。
再说个冷门的。如果你的ASP文件里第一行写了<%@ Language="VBScript" %>,但服务器上没启用父路径,或者脚本引擎注册表损坏,也会出现不解析的情况。这类问题排查起来麻烦,得打开事件查看器,翻应用程序日志,看有没有对应的错误记录。多数时候是权限或配置问题,但偶尔会遇到系统更新后IIS配置被重置的破事。
我自己遇到过最诡异的一次,是服务器上装了多个版本的.NET Framework,IIS默认使用的ASP.NET版本和站点目标框架不一致,导致脚本引擎加载失败。页面不报错,也不执行,就默默地把源码当普通文本发出去。最后用aspnet_regiis.exe重新注册了对应版本才解决。这种问题靠看代码根本无解,只能从服务器环境下手。
所以当你看到ASP代码原样显示时,别急着怀疑代码逻辑。先确认IIS装了ASP模块,再检查应用程序池模式,然后看文件扩展名和权限,最后翻系统日志。八成问题出在环境配置上,不是代码本身。写ASP的人都知道,这语言老归老,但跑起来挺稳的。真正让人头大的,从来都是那些藏在系统角落里的开关没拨对。