【发布时间】:2015-05-11 15:34:08
【问题描述】:
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 是否有可以从 .VBS 手动调用以进行测试的接口?
-
很可能您的应用程序池在 64 位模式下运行,而 DLL 是 32 位。尝试在应用程序池的高级设置选项中将“启用 32 位应用程序”设置为 true。
-
不知道接口,因为我没有源代码或任何文档(应用程序已有 12 年历史),并且我没有失败请求跟踪没有安装。跨度>
-
应用程序池已作为 32 位应用程序运行。
-
使用哪一行代码在服务器上注册它?
标签: iis vbscript asp-classic vb6 activex