问题标签 [com+]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1396 浏览

.net - 是否可以在 .Net 应用程序和 COM+ 对象之间共享事务?

不久前我做了一些测试,但从未弄清楚如何进行这项工作。

这些成分:

  • COM+ 事务对象(用 VB6 开发)
  • IIS 中的 .Net Web 应用程序(带有事务)...
    调用 COM+ 组件
    更新 SQL 数据库中的一行

测试:

运行 .Net 应用程序并强制异常。

结果:

从 .Net 应用程序进行的更新会回滚。
COM+ 对象所做的更新不会回滚。

如果我从旧的 ASP 页面调用 COM+ 对象,则回滚工作。

我知道有些人可能在想“什么?!COM+ 和 .Net,你一定是疯了!”,但世界上有些地方仍然有很多 COM+ 组件。我只是好奇是否有人遇到过这个问题,以及你是否知道如何使这项工作。

0 投票
5 回答
1025 浏览

.net - .NET 是否使原始 COM 和 DCOM 编程变得多余?

.net 框架的引入是否使 COM 和 DCOM 中的原始编程变得多余?

(除了使用一些 COM+ 服务,例如通过 System.EnterpriseServices 命名空间进行事务管理)

0 投票
1 回答
3271 浏览

c# - 如何在 Windows 安装程序包添加的注册表项中引用 GAC 中程序集的路径?

我有一个 .NET 程序集,其中包含要通过 EnterpriseServices (COM+) 注册为 ServicedComponent 并由第三方应用程序通过 COM RPC 调用的类。因此,我需要将它添加到 GAC 并HKEY_CLASSES_ROOT\CLSID\{clsid}\CodeBase在 GAC 文件夹中的程序集 DLL 路径下添加一个注册表项。(我不能依赖 regsvcs 来做,因为这是一个 32 位的程序集 --- 它依赖于 32 位的第三方组件 --- 而我之前提到的第三方应用程序看不到类Wow6432Node)

所以问题是:

要在 GAC 中创建的程序集的路径,或者至少是 GAC 文件夹本身的路径,是否可以在 Windows Installer 中作为可用于注册表项值等的属性?

0 投票
1 回答
457 浏览

.net - 返回 IDataReader 的 .net COM+ 对象

我创建了一个派生自 ServicedComponent 的 .net 类,并将其注册到 COM+。该组件实现的接口有一个返回 IDataReader 的方法。当我从客户端应用程序调用服务组件时,一切正常,我可以调用返回 IDataReader 的方法没有问题,但是一旦我调用对象上的方法,我就会得到异常:“System.Runtime.Remoting.RemotingException:这个远程处理代理没有通道接收器,这意味着服务器没有注册的服务器通道正在侦听,或者此应用程序没有合适的客户端通道与服务器通信。”

我稍微修改了我的代码,并意识到如果我创建自己的可序列化(具有 Serializable 属性)的 IDataReader 实现,它将起作用。如果实现派生自 MarshalByRefObject 则失败。

那么,是否可以通过 COM+ ServicedComponents 的引用返回标准 .net 对象,如果可以,我需要做些什么来实现它?

0 投票
2 回答
1444 浏览

.net - 是否需要在 GAC 中安装 (.net) COM+ 程序集?

我有一个 .net 程序集,其中有一个 COM+ ServicedCopmonent,目前我将它安装到 GAC 中以使一切正常。这意味着我还需要在 GAC 中拥有它引用的每个程序集。

在开发过程中,对这些程序集进行更改、将它们重新安装到 GAC 并进行测试是非常痛苦的。

是否可以维护 COM+ 组件但在 GAC 中没有所有内容?

0 投票
1 回答
315 浏览

com+ - 调用 COMAdminCatalog.InstallApplication 中的应用程序文件是什么类型

有没有人使用 COMAdminCatalog.InstallApplication 成功地将应用程序安装到 COM+ 中?如果是这样,您需要将什么类型的文件作为 bstrApplicationFile 参数传递?

0 投票
1 回答
439 浏览

singleton - COM+ Singleton 大量参考

我有一个 COM+ 数据服务,它被配置为使用最小和最大池大小为 1 的对象池。所以我有一个单例。在某些情况下,我的对象计数(引用此实例的客户端数量)超过 1 并稳步增加。实例创建和对其方法的一次调用被包装在 using stmt 中,因此该实例应正确返回到池中。同时发生这种情况,我看到一些网络问题(SQLServer 的传输级错误异常)。我怀疑那里可能存在一些相关性。

对象计数如何超过 1?

0 投票
2 回答
1977 浏览

.net - 如何从 .NET 设置 COM+ 组件的构造函数字符串?

我正在尝试从 C# 应用程序以编程方式设置 COM+ 组件的构造函数字符串。我在网上找到了下面的示例代码,但是它抛出了一个异常:

当我运行此代码时,我在第 6 行得到以下异常:

无法将类型为“System.__ComObject”的 COM 对象转换为类类型“COMAdmin.COMAdminCatalogCollectionClass”。进入 CLR 且不支持 IProvideClassInfo 或未注册任何互操作程序集的 COM 组件将包装在 __ComObject 类型中。这种类型的实例不能转换为任何其他类;但是,只要底层 COM 组件支持对接口的 IID 的 QueryInterface 调用,它们就可以转换为接口。

知道我哪里出错了吗?或者有没有更简单的方法来做到这一点?

0 投票
1 回答
1146 浏览

com+ - 如何以编程方式回收 COM+ 中的 dllhost.exe 进程?

如何以编程方式回收 COM+ 中的 dllhost.exe 进程?

0 投票
2 回答
2338 浏览

c# - 为什么我得到 E_ACCESSDENIED 从代理调用 COM+ 方法?

抱歉,如果这有点冗长...考虑一下:

我在名为Company的命名空间中有一个 COM+ 应用程序,它公开了一个名为Server的对象,该对象具有以下方法:

IOptions 仅具有几个布尔读/写属性,如下所示:

我使用以下代码创建了一个客户端应用程序:

我在机器 A 上安装 COM+ 应用程序,然后在机器 A 上执行客户端,一切都很好。

然后我修改客户端应用程序,使其创建自己的 IOptions 实现,如下所示:

同样,我在机器 A 上执行客户端应用程序,一切都很好。

如果我在机器 B 上安装 COM+ 应用程序作为机器 A 的代理,然后执行客户端,则会在调用以下命令时收到 E_ACCESSDENIED 错误:

这是在机器 B 访问机器 A 上执行的代码的摘要

总而言之,当客户端与 COM+ 应用程序在同一台机器上时,为什么我可以实现自己的 IOptions 并在 COM+ 应用程序中使用它,但当客户端通过另一台机器上的代理访问 COM+ 应用程序时却不能?

似乎如果 IOptions 是由服务器创建的,那很好,但如果它是由客户端创建的,则不是。

任何帮助将不胜感激。

谢谢,

卡尔。