【问题标题】:ASP - Server.CreateObject returns nothing, Classic ASPASP - Server.CreateObject 不返回任何内容,经典 ASP
【发布时间】:2016-02-21 07:30:48
【问题描述】:

团队,

以下代码在尝试调用 dll 组件时在我的经典 ASP 页面中向 myobj 返回空/null。

Set myobj = Server.CreateObject("MODULENAME.cCLASSNAME")

这与放置在 \Bin 下的这个 asp 页面旁边的一个 DLL 有关。 DLL是前同事定制开发的Interop COM dll,目前无法访问代码。

DLL 组件出现在 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ 下的 regEdit 中,这让我假设它已注册。但是,当我尝试使用 regsvr32 重新注册时,它显示它已加载但找不到 DLLRegisterServer 方法。我使用 regAsm 注册组件。

任何可以在这里完成的替代方法?我错过了什么吗?

【问题讨论】:

  • 这是您创建的 DLL 吗?它是一个 COM DLL 吗?这是您的本地计算机还是 Web 服务器?当您说代码失败时,您是什么意思?如果您在此处需要帮助,您需要提供更多信息。
  • 对不起,史蒂夫,我已经用您要求的一些额外细节更新了查询。如果我可以添加更多信息,请告诉我。

标签: vb.net asp-classic .net-assembly


【解决方案1】:

如果文件名以“Interop”或“AxInterop”开头,它可能是 COM DLL 的包装器,而不是它自身的 DLL。 COM DLL 必须在系统上注册,然后 dotNet 应用程序将使用/创建该包装器,以便您可以调用它。

您需要做的是找到 DLL,而不是 Interop,因为您没有在 Classic ASP 中使用 dotNet。确保它已在该计算机上注册(使用 regsvr32 没有错误),然后这应该可以工作。

最后一点/提示,前同事创建的 dll 是用 C 或 VB(不是 dotNet)完成的,对吗?如果在dotNet中完成,它不是COM,您需要研究“如何从非托管代码调用托管DLL”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 2022-07-01
    • 2010-12-02
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多