ActiveX dll 不适用于 IIS 8.5

ActiveX dll not working on IIS 8.5

ActiveX dll 无法在 IIS 8.5 上运行

我们有一个经典的 ASP 应用程序,它使用 ActiveX dll 动态生成图像。它正在使用 IIS6 在 Window 2003 上进行查找。但我们正在将其迁移到 Windows 2012 和 IIS 8.5。 DLL 在服务器上注册,在其自己的应用程序池下配置为 运行(无托管代码,经典管道模式)。它的虚拟目录被配置为 运行 作为一个应用程序,并且有一个 *.dll 的处理程序映射指向所有具有执行访问权限的动词的 DLL,这与 IIS6 的配置相同。

呈现 HTML 调用 DLL 的 ASP 代码如下所示:

<%dim SpokeData
dim JobName
dim NumOfExperts
dim ThisDirNo
dim ThisSel
dim PAPIType
dim JobType
dim SpokeDataShort
SpokeData = trim(Request.QueryString("Data"))
JobName = trim(Request.QueryString("JobName"))
NumOfExperts = trim(Request.QueryString("Exp"))
PAPIType = trim(Request.QueryString("PAPIType"))
JobType = trim(Request.QueryString("JobType"))
CalcDate = trim(Request.QueryString("Date"))
For ScaleNo = 1 to 20
    ThisSel = Mid(SpokeData,(ScaleNo*2),1)
    ThisDirNo = Mid(SpokeData,(ScaleNo*2)-1,1)
    If ThisSel = "1" then SpokeDataShort = SpokeDataShort & ThisDirNo else SpokeDataShort = SpokeDataShort & "0"

Next
Response.Write("<div id='Wheel'><img style='margin-left:20px' src='http://www.example.com/jpwheel/jpwheel.dll?Handler=Render&nori=" & PAPIType & "&dir=" & SpokeDataShort & "&" & Now & "'></div>")
%>

HTML 看起来像这样:<img src="http://www.example.com/jpwheel/jpwheel.dll?Handler=Render&amp;nori=N&amp;dir=55555050555000000000&amp;11/05/2015 16:05:24" style="margin-left:20px"> 如果我尝试直接下载它,我会收到 500 错误(不幸的是没有错误日志)。

它适用于 IIS6,不适用于 IIS8.5。谁能对将 ActiveX 服务器端 DLL 迁移到 IIS8.5 有所了解?我还没有做的一件事是检查 DLL 的依赖关系,有人可以为此推荐一个工具吗?我猜随着 windows 2003 年即将结束,很多人 运行 都会遇到这样的问题。

问题是由于使用了不正确的处理程序映射引起的。我将其设置为脚本映射。它需要是具有以下详细信息的模块映射:

  • 请求路径:*.dll
  • 可执行文件:jpwheel.dll
  • 的路径
  • 模块:IsapiModule
  • 姓名:jpwheel

请求限制:所有动词,需要访问:脚本

功能权限:读取、脚本、执行

现在可以使用了。