【问题标题】:GetObjectContext returns nothing in VB6 COM dll, called from classic ASPGetObjectContext 在从经典 ASP 调用的 VB6 COM dll 中不返回任何内容
【发布时间】:2011-04-04 15:16:27
【问题描述】:

我正在使用 VB6 IDE 调试这个 Active X dll。我可以看到执行到了对 GetObjectContext 的尝试。此方法总是返回 NOTHING。

这发生在 Windows 7 32 位 IIS 7 上。(该应用程序在其他位置运行,其中之一是带有 IIS 7 的 Windows Server 2008)

我在 Google 上进行了广泛搜索,发现了许多与 COM+ 相关的参考资料,但我的场景中没有涉及 COM+。只是来自已注册 dll 的普通旧 Server.CreateObject。

我的ASP代码如下

SET objCalendar = Server.CreateObject("SSYSDEV.Calendar")
objCalendar.BuildCalendar("ADMINUSERS")
SET objCalendar = Nothing

dll中请求函数的问题行是:

Dim objHttpRequest As ASPTypeLibrary.Request
Set objHttpRequest = GetObjectContext.Item("Request")

我们将一如既往地为您提供任何帮助或建议。

我仍然在克服不得不使用 VB6 的震惊——我从没想过它会发生!这就像被拖回黑暗时代,以一种非常粗暴的方式导致水泡!

附:我还设置了一个 COM+ 组件并让 ASP 以这种方式获取对象,GetObjectContext 在这种情况下返回一个空对象,其中没有 ASP 对象。所以这没有帮助:-(

【问题讨论】:

  • 我发现上述行为是由于 COM+ 在调试中的行为与其他情况不同。在调试中,它总是会返回一个虚拟上下文——其中没有有用的对象。 AnthonyWJones 下面的解决方案不受此限制影响,完美解决问题。

标签: iis-7 windows-7 vb6 asp-classic httpcontext


【解决方案1】:

我知道这有点晚了,但我遇到了类似的问题,这为我解决了:

线程:通过 COM+ 访问请求对象时出现问题

http://forums.iis.net/t/1146404.aspx

总结:在 COM+ 组件中开启“Allow IIS Intrinsic Properties”。

【讨论】:

  • 这帮助很大!非常感谢!
  • 我知道这甚至有点晚了,但刚刚发现此属性在 Windows 2003 中无法访问,但在 Windows 2012 中。谢谢,汤姆,这个问题让我发疯了(Yar !)。
【解决方案2】:

我发现在 IIS 中使用 VB6 组件的 COM+ 方法有点不稳定。我将此添加到我想在 ASP::-

中实例化的 VB6 类中
Private moScriptCtx As ScriptingContext

Public Sub OnStartPage(SC As ScriptingContext)

    Set moScriptCtx = SC

End Sub

您现在可以将 Request、Response、Server 等作为 moScriptCtx 对象的属性进行访问。

您可能想知道您最初是如何调用OnStartPage 的。在 CreateObject 执行期间,您不会 ASP 自动为您执行此操作。

【讨论】:

  • 绝对的魔法!谢谢!
猜你喜欢
  • 2016-02-21
  • 2010-11-14
  • 1970-01-01
  • 2013-08-24
  • 1970-01-01
  • 2019-01-16
  • 2011-10-09
  • 2013-03-04
  • 2018-09-13
相关资源
最近更新 更多