经典Asp .asp扩展页的处理程序映射在IIS集成管道模式下出错

时间:2013-03-12 08:30:42

标签: asp.net asp-classic iis-7.5

我正在尝试在IIS 7 集成管道线模式下运行经典的Asp页面。因此,我在Web.Config中添加了以下Handler映射。

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页面时,会引发服务器应用程序不可用错误,并且详细的应用程序事件日志表示:

映射到aspnet_isapi.dll的请求是在以集成.NET模式运行的应用程序池中进行的。 Aspnet_isapi.dll只能在Classic .NET模式下运行时使用。请在处理程序映射上指定preCondition =“ISAPImode”,使其仅在以Classic .NET模式运行的应用程序池中运行,或者将应用程序移动到以Classic .NET模式运行的另一个应用程序池,以便使用此处理程序映射。 / p>

我哪里出错了?

2 个答案:

答案 0 :(得分:10)

Classic ASP的脚本处理器不是:

  

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

但:

  

%windir%\system32\inetsrv\asp.dll

安装Classic ASP时,这是来自IIS7的applicationHost.config文件的正确处理程序映射条目:

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

听起来您没有在服务器或工作站上安装Classic ASP。

在Windows 7上,您需要转到控制面板 - &gt;程序和功能然后单击“打开或关闭Windows功能”。您将看到一个如下所示的窗口,确保勾选“ASP”:

enter image description here

在Windows 2008R2上转到控制面板 - &gt;管理工具 - &gt;服务器管理器。单击左侧面板中的“角色”,然后向下滚动到“Web服务器(IIS)”。应该有一个像这样的“角色服务”列表(我已经突出显示了安装在我拍摄此屏幕截图的服务器上的ASP):

enter image description here

如果未安装ASP,请单击“添加角色服务”并勾选 Web服务器 - &gt;下的ASP复选框。应用程序开发并单击“下一步”以完成安装。

如果一切顺利,那么您应该在IIS管理器中看到处理程序映射:

enter image description here

答案 1 :(得分:0)

为了在IIS 7中运行经典的asp页面,您还需要安装它吗? (在IIS 7上默认不安装。)

请参阅此处如何添加asp模块,具体取决于您在Windows7或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_