【问题标题】:What does IIS 7.5 need to run my vb6 32bit DLL?IIS 7.5 需要什么来运行我的 vb6 32 位 DLL?
【发布时间】:2019-10-17 19:21:53
【问题描述】:

我有一个已注册的 DLL(用 VB6 编写),可以在 VB6 exe 中正常工作。但是在同一台机器上,当我尝试在 CLASSIC ASP 中创建服务器对象时,IIS7.5 就挂了。

...
dim bob as object

Set bob = Server.CreateObject("project.classname")
...

我对管理 IIS 知之甚少。我曾尝试在模块部分中注册此 DLL,但这没有用。所以我删除了它。有一次,我什至在我的实验中完全阻止了 ASP 页面的加载,这需要我实际编辑 applicationHost.config 文件以删除对我的 DLL 的所有提及。

我确信这是我的 DLL 的 IIS 问题,但我的谷歌搜索都没有得到我可以理解或有效的点击。

非常感谢您的帮助。

谢谢 哈利

【问题讨论】:

  • 几件事,1. Web 应用程序正在使用的应用程序池是否将Enable 32 bit Applications 设置为True? 2、DLL是否有兼容的COM接口iDispatch支持后期绑定,不支持早期绑定)
  • 谢谢兰奇。当我回到家时,我会看看 32 位应用程序是否设置为。我想,因为当我测试它时,我的 VS2017 的 ASP 页面中引用了相同的对象 - 它运行良好。 VS 内置 IIS 的某些设置是正确的,而我的机器实际 IIS 不是我的主要理论。但我不知道如何查看 VS2017 那里发生的事情.....
  • @Lankymart VB6 DLL 会自动设置 COM 接口,不是吗?
  • @HarryA 你是如何确定它挂在哪一行的?
  • @DaveInCaz 老实说,我不是 100% 确定,但如果它没有实现 iDispatch 接口,它将无法与 VBScript 中的后期绑定一起使用。多年来看到过类似的问题,因此提出了建议。

标签: dll asp-classic vb6 iis-7.5


【解决方案1】:

尝试在机器上使用 regsvr32 注册 VB (COM) DLL。假设它是 64 位操作系统,请确保使用 %Windows%\SysWOW64\ 文件夹中的 regsvr32.exe,而不是 %Windows%\System32 中的一个。它实际上不同的。

this SO posting

【讨论】:

  • 哇,没想到这一点....我必须回到那个搁置的项目并尝试一下。谢谢!
【解决方案2】:

您是否将应用程序池设置为经典?这是一种向后兼容模式。您可以在 docos 中查看更多内容:

https://docs.microsoft.com/en-us/iis/configuration/system.applicationhost/applicationpools/

【讨论】:

  • 我很早就这样做了。它有助于我早期的进步,但这个障碍后来出现了。
猜你喜欢
  • 1970-01-01
  • 2011-04-16
  • 2018-12-25
  • 2010-11-30
  • 2011-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多