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&nori=N&dir=55555050555000000000&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
请求限制:所有动词,需要访问:脚本
功能权限:读取、脚本、执行
现在可以使用了。
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&nori=N&dir=55555050555000000000&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
请求限制:所有动词,需要访问:脚本
功能权限:读取、脚本、执行
现在可以使用了。