经典 ASP 的 Handler 映射——在 IIS 集成管道模式下,.asp 扩展名页面出现错误

5

我正在尝试在IIS 7的集成管道模式下运行经典Asp页面。因此,我已将以下处理程序映射添加到Web.Config中。

add name="ASPClassic" 
path="*.asp" 
verb="GET,HEAD,POST" 
modules="IsapiModule" 
scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" 
requireAccess="Script"
resourceType="Unspecified" 

但是,当请求 .asp 页面时,会出现服务器应用程序不可用错误,并且详细的应用程序事件日志显示:

在运行于集成 .NET 模式下的应用程序池中进行了对 aspnet_isapi.dll 的请求映射。只有在运行于经典 .NET 模式下时,才能使用 aspnet_isapi.dll。请在处理程序映射上指定 preCondition="ISAPImode" 以使其仅在运行于经典 .NET 模式下的应用程序池中运行,或将应用程序移动到另一个运行于经典 .NET 模式下的应用程序池中,以便使用此处理程序映射。

我做错了什么?

2个回答

10

经典 ASP 的脚本处理器不是:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll

而是:

%windir%\system32\inetsrv\asp.dll

当安装了经典 ASP 时,以下是 IIS7 的 applicationHost.config 文件中正确的处理程序映射条目:

<add name="ASPClassic" 
     path="*.asp" 
     verb="GET,HEAD,POST" 
     modules="IsapiModule" 
     scriptProcessor="%windir%\system32\inetsrv\asp.dll" 
     resourceType="File" />

看起来你的服务器或工作站上没有安装经典ASP。

在Windows 7上,你需要进入 控制面板 -> 程序和功能 ,然后点击“打开或关闭Windows功能”。你会看到一个窗口,看起来像这样,请确认“ASP”已被选中:

enter image description here

在Windows 2008R2上,进入控制面板 -> 管理工具 -> 服务器管理器。在左边的面板中单击“角色”,然后向下滚动到“Web服务器(IIS)”。会有一个类似这样的“角色服务”列表(我用黄色标出了服务器上安装的ASP):

enter image description here

如果未安装ASP,则点击“添加角色服务”,并在Web服务器->应用程序开发下选中ASP复选框,然后单击“下一步”以完成安装。

如果一切正常,您应该在IIS管理器中看到处理程序映射:

enter image description here


非常感谢您的贡献。我会尽快检查并标记您的答案为已接受。 - Pyae Phyo Aung
我在解决另一个问题时发现了这个,并且发现我没有安装经典 ASP,但是我的计算机上的 ASP 脚本却可以正常运行。这怎么可能呢? - Joshua Frank
@JoshuaFrank - 你在运行什么操作系统? - Kev
@Kev:Windows 8带有IIS 8.0。 - Joshua Frank
@Kev:我觉得在家里是64位处理器。 - Joshua Frank
显示剩余2条评论

0

在IIS 7中运行经典asp页面是否仍需要安装它?(在IIS 7上默认未安装。)

请参阅此处,了解如何添加asp模块,具体取决于您使用的是Windows 7还是Windows Server 2008:http://www.iis.net/configreference/system.webserver/asp

顺便说一下:您正在尝试的确实是经典管道模式中的脚本映射。
另请参阅:http://www.iis.net/learn/application-frameworks/building-and-running-aspnet-applications/wildcard-script-mapping-and-iis-integrated-pipeline_


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接