ASP Bizarre Session COM + Object Lost!

时间:2010-09-29 13:04:16

标签: session iis asp-classic com+

我需要你的很多帮助。

我在ASP中有一个应用程序,而不是ASP.NET ...它使用了为我开发的几个COM +组件。

以下是使用其中一个组件的示例。

Dim componentXPTO
Dim xpto

componentXPTO = Server.CreateObject("NAMESPACE.XPTO")

Set xpto = componentXPTO.myFunction(variables)

Set Session("XPTO") = xpto

Set componentXPTO = Nothing

Set xpto = Nothing

---------------------------------

Session("XPTO").name

我遇到的问题是断断续续的。我在会话中多次访问变量XPTO而没有任何问题。因此,此代码正在运行。发生的情况是,有时当我在相同的用户会话中访问相同的变量XPTO时,会发生以下错误:

| 27 | 800a01ce | The_remote_server_machine_does_not_exist_or_is_unavailable: _'Session (...). name '

我的怀疑是,当XPTO对象从COM +函数返回时,保持对进程的dllhost引用以及循环机制(Lifetime 10 minuts)终止进程的那一刻对这个对象的引用丢失了,为此我我的应用程序中出现此错误...

它有一些我正在谈论的逻辑?返回带有参考的功能并在回收过程中保留此参考文献?

我已经尝试过各种方式进行调试,剩下的唯一问题就是这个......

请有人帮助我!

1 个答案:

答案 0 :(得分:0)

有关此问题的详细信息。

在我的调查中,我的组件函数返回一个xpto,而xpto是一个包含其他函数和一些属性的VB类。

如果我的应用程序调用asp会话给了一个xpto类(来自com +)并且组件函数的dllhost被回收,那么com + stub的空引用是否正确? 这条消息是上诉

| 27 | 800a01ce | The_remote_server_machine_does_not_exist_or_is_unavailable: _'Session (...). name '

这是问题,我在会话中有一个来自com + reference的类,我的组件服务使用了recyclind和pooling策略?