问题标签 [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 回答
2654 浏览

c# - COM+ System.InvalidCastException 上的错误。

我们有一个不时发生的问题。我们有一个 Web 服务器和一个应用程序服务器。我们的应用服务器包含我们的业务逻辑代码,它作为 COM+ 服务器和库应用程序安装。然后,我们在 Web 服务器上放置一个代理,以强制从 Web 服务器到 COM+ 服务器的所有调用。几乎 100% 的时间一切都正常运行。每一次,一个蓝月亮,当然,只有在生产机器上,这个问题才会让人头疼。下面是我们通过企业库记录的事件日志条目。

它开始记录此事件日志:

然后在稍后的请求之后记录此事件日志。

堆栈跟踪走得更远一点,但这没关系。基本上在它应该从 Web 服务器跳转到 COM+ 服务器时发生。

我们可以通过在 COM+ Server 上重新启动 COM+ Server 应用程序来解决这个问题,但这对我来说还不够好……我本质上是一个修复者。

这些错误并不完全清楚地说明正在发生的事情。谁能阐明这些错误的含义以及如何避免出现这些错误?

通常情况下,我永远不会发这样的帖子。我想我遇到的问题是正在发生的异常的模糊不清。搜索为什么会发生这种情况会产生很少的结果。

0 投票
1 回答
1009 浏览

c# - 带有自定义 ConfigurationSection 的 COM+ 服务器配置

我有一个 COM+ 服务器托管一个实现 ServicedComponent 的 .Net 组件。

COM+ 服务器需要访问一个配置文件,其中定义了自定义配置部分。

我可以使用以下代码加载配置:

System.InvalidCastException:无法将“System.Configuration.DefaultSection”类型的对象转换为“MyProject.MyCustomSettings”类型

以下是我在配置文件中声明自定义配置部分的方式:

这种情况确实返回了一个 DefaultSection 对象,它似乎没有多大用处,因为我期待一个 CustomSettings 对象。

请注意,MyProject 是强命名的。

一种选择是在 GAC 中安装 MyProject.dll 程序集,但出于组织原因,此解决方案没有吸引力。

还有什么建议吗?

如何从运行在 DLLHost 中的进程的给定程序集的配置文件中加载自定义配置部分?

谢谢。

0 投票
2 回答
3285 浏览

c# - 将 C# 类库用作 COM+ 服务器应用程序

我在 C# 中创建了一个 .NET 类库并将其公开给 COM。它可以作为进程内 COM 服务器正常工作。但是,我想将它用作一个 out-proc COM 服务器,以便将它放在一个单独的进程中。

为此,我尝试创建一个 COM+ 应用程序。我创建了一个空的 COM+ 应用程序并将类库中实现的类添加到其中。当我调用 CoCreateInstance() 来实例化库中实现的类时,COM+ 代理进程遇到访问冲突并终止(崩溃转储如下)。

是否需要采取任何特殊步骤来创建可用作 COM+ 下的进程外 COM 服务器的类库?

COM+ 代理进程因以下故障转储而崩溃:

例外:C0000005
地址:0x000C1618

调用堆栈:
!+ 0xC1618
mscorwks!Ordinal79 + 0xE41C
mscorwks!Ordinal79 + 0xE4AD
mscorwks!CoInitializeEE + 0x563F
mscorwks!CoInitializeEE + 0x5672
mscorwks!CoInitializeEE + 0x57F1
mscorwks!CoInitializeCor + 0x210E
mscorwks!CoInitializeCor + 0x48D
mscorwks!Ordinal79 + 0x16D2
mscorwks!ReleaseFusionInterfaces + 0x20B28
COMSVCS! + 0xC29A2
COMSVCS!+ 0xC2BDA
COMSVCS!CoCreateStdTrustable + 0xCB10
ole32!CoMarshalInterface + 0x2642
ole32!CoInstall + 0x673
ole32!CoQueryAuthenticationServices + 0x1F44
ole32!CoQueryAuthenticationServices + 0x2862
ole32!CoWaitForMultipleHandles + 0xC267
ole32!CoQueryClientBlanket + 0x16CE
ole32!CoCreateObjectInContext + 0xC8E
ole32!CoInstall + 0x87A
ole32!CoWaitForMultipleHandles + 0x10479
ole32!CoMarshalInterface + 0x2808
ole32!CoGetTreatAsClass + 0xBE7
ole32!CoGetTreatAsClass + 0xB9E
ole32!CoMarshalInterface + 0x28F2
ole32!CoMarshalInterface + 0x2642
COMSVCS!CoCreateStdTrustable + 0x106A4
ole32!CoMarshalInterface + 0x2642
ole32!CoPopServiceDomain + 0x14FE
RPCRT4!CheckVerificationTrailer + 0x70
RPCRT4!NdrStubCall2 + 0x215
RPCRT4!CStdStubBuffer_Invoke + 0x82
ole32!StgGetIFillLockBytesOnFile + 0xFC92
ole32!StgFileCLock +
ole32!CoRevokeClassObject + 0xA3E
ole32!CoRevokeClassObject + 0x963
ole32!StgGetIFillLockBytesOnFile + 0xF872
ole32!WdtpInterfacePointer_UserMarshal + 0x80E
ole32!StgGetIFillLockBytesOnFile + 0xF792
RPCRT4!NdrGetTypeFlags + 0x1C9
RPCRT4!NdrGetTypeFlags + 0x12E
RPCRT4!NdrGetTypeFlags + 0x5A
RPCRT4!CreateStubFromTypeInfo + 0x2D7
RPCRT4!CreateStubFromTypeInfo + 0x318
RPCRT4!NdrConformantArrayFree + 0x2CB
RPCRT4!NdrConformantArrayFree + 0x20F
RPCRT4!I_RpcBCacheFree + 0x61C
RPCRT4!I_RpcBCacheFree + 0x43E
RPCRT4!I_RpcBCacheFree + 0x604
kernel32!GetModuleFileNameA + 0x1B4

0 投票
4 回答
508 浏览

.net - 企业服务替代方案

.NET 中是否有任何替代服务组件 (COM+) 的方法?

我正在寻找由操作系统托管并可以在本地访问(不需要远程连接)的按需(不像 Windows 服务那样始终运行)可管理组件。

0 投票
1 回答
1037 浏览

c# - 组件服务和 C#

我有一个包装在 COM+(组件服务)中的 VB6 COM dll。对于我的一生,我无法弄清楚如何获取对在 C# 中导入/工作的服务的引用。谷歌根本没有帮助我。添加引用对话框中没有显示任何内容,甚至与我的服务名称相近。有没有人有任何代码/提示如何做到这一点?谢谢。

0 投票
3 回答
1016 浏览

.net - 将应用程序层拆分为不同的程序集

我的公司正在进行一场辩论。一些人提倡将业务、数据和业务实体移动到一个组件中,以实现

  • 可发现性目的。让您轻松找到所需内容。
  • 减少我们需要添加到项目中进行开发的dll的数量

引用应用程序架构指南的其他人希望每个层和业务实体在一个单独的程序集中。

请注意

  • 我们的业务层和数据层都由 com + 组件组成。
  • 我们当前的硬件架构在同一个盒子上拥有 Web、业务和数据。
  • SQL 在不同的盒子上。
  • 我们目前没有使用 dll 版本控制,因为无论如何它对 com+ 几乎没有用处。

有些用户有一种直觉,认为我们应该拆分我们的业务、数据和实体,但缺乏理由。

  • 潜在地减少内存消耗
  • 通过仅将业务层程序集添加到 Web 项目来鼓励正确的体系结构。如果数据服务也可用,那么很容易以错误的方式做事
  • 当我们将 Web 服务器与业务层和数据层分开时,我们将不必安装我们不需要的垃圾组件。

现在我们的系统中有大约 600 个 dll。所以我们处于一个极端,一切都被分裂了。肯定会发生一些整合,但所提议的是将我们带到一个完全的另一个极端,即每个应用程序都在一个 dll 中。

我可以从外部角度了解这个常见问题吗?

谢谢!

0 投票
3 回答
1109 浏览

.net - 企业服务中的事务和池功能是否有现代替代品?

我正在使用 EnterpriseServices AKA Com+ 的 ServicedComponent

  • 分布式事务
  • 使用属性的简单事务编程
  • 对象池

我发现 com+ 中缺少的东西

  • 缺少 dll 版本控制
  • 每次更改组件时都必须进行 gac 和 reg 的痛苦
  • 必须附加调试器

我知道 WCF 解决了一些与 COM+ 相同的问题。但它能解决所有问题吗?有人能指出我正确的方向吗?

谢谢

0 投票
2 回答
1244 浏览

wcf - Windows 激活服务 + WCF 是 COM+ 的替代品吗

WAS 功能

  • 应用程序池
  • 回收
  • 空闲时间管理
  • 身份管理
  • 隔离

听起来很像 COM+,但托管在 IIS 7 中。有人在使用这项技术吗?我比较两者是否正确?

0 投票
1 回答
536 浏览

vb6 - 在不使用 clireg 的情况下注册 vb6 com+ 应用程序时如何指定 com+ 服务器?

我找到了很多关于如何使用 WiX 或从 dcomcnfg 导出的 msi 安装 com+ 组件的文档,但是这些方法的问题是我看不到在哪里指定 com+ 服务器。

目前我们使用 clireg 和 -s 开关注册组件,它允许我们像这样指定 com+ 服务器:

至少可以说这很混乱,我一直在尝试将其引入某种自动安装形式,而无需调用充满 clireg32 调用的批处理文件。

目前,WiX 是我们包装自动化的支柱,因此使用 WiX 的解决方案将非常棒。

谢谢。

0 投票
1 回答
1937 浏览

.net - 从 .NET 到 DB2 的分布式事务

我有一个问题,我必须调用 AS400 db2 从我的 .net 调用一系列插入/更新存储过程,然后如果 AS400 db 中的一切正常,则更新一些 SQL2005 表。我使用的驱动程序没有分布式事务,所以我想知道您是否可以使用任何 IBM iSeries Drivers for DB2 来创建一个参与分布式事务的 COM+/.NET 组件。请让我知道是否有人以前做过类似的事情,或者任何指针将不胜感激。