简体   繁体   English

ActiveX dll在IIS 8.5上不起作用

[英]ActiveX dll not working on IIS 8.5

ActiveX dll not working on IIS 8.5 ActiveX dll在IIS 8.5上不起作用

We have a classic ASP application that uses and ActiveX dll to generate an image on the fly. 我们有一个经典的ASP应用程序,该应用程序使用和ActiveX dll即时生成图像。 It was working find on Window 2003 with IIS6. 在带有IIS6的Window 2003上可以正常工作。 But we're migrating it to Windows 2012 and IIS 8.5. 但是我们正在将其迁移到Windows 2012和IIS 8.5。 The DLL is registered on the server, configured to run under it's own app pool (No Managed Code, Classic pipeline mode). DLL在服务器上注册,配置为在其自己的应用程序池下运行(无托管代码,经典管道模式)。 It's virtual directory is configured to run as an application and has a handler mapping for *.dll to point to the DLL for all verbs with Execute Access rights, which is the same config for IIS6. 它的虚拟目录配置为作为应用程序运行,并且具有* .dll的处理程序映射,以指向具有执行访问权限的所有动词的DLL,这与IIS6的配置相同。

The ASP code to render the HTML calling DLL looks like this: 呈现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>")
%>

The HTML then lookslike this: <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"> if I try to download this directly I get a 500 error (no error log unfortunately). 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错误(没有错误日志不幸)。

It is working on IIS6, not working on IIS8.5. 它可以在IIS6上运行,而不能在IIS8.5上运行。 Can anyone cast some light on migrating ActiveX server-side DLLs to IIS8.5? 任何人都可以在将ActiveX服务器端DLL迁移到IIS8.5上大放异彩吗? One thing I haven't done is check the dependencies for the DLL, can anybody recommend a tool for that? 我还没有做的一件事是检查DLL的依赖关系,有人可以为此推荐工具吗? I'm guessing with windows 2003 coming to end of life a number of people are running into issues like this. 我猜想Windows 2003即将寿终正寝,许多人都遇到了这样的问题。

The problem was caused by using the incorrect handler mapping. 该问题是由于使用了不正确的处理程序映射引起的。 I had it setup as a Script Map. 我将其设置为脚本映射。 It needed to be a Module Mapping with the following details: 它必须是具有以下详细信息的模块映射:

  • Request path: *.dll 请求路径:*。dll
  • Executable: Path to the jpwheel.dll 可执行文件:jpwheel.dll的路径
  • Module: IsapiModule 模块:IsapiModule
  • Name: jpwheel 名称:jpwheel

Request Restrictions: All Verbs, Access required: Script 请求限制:所有动词,需要访问:脚本

Feature Permissions: Read, Script, Execute 功能权限:读取,脚本,执行

So it's working now. 因此,它现在正在工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM