由于以下错误,检索具有CLSID的组件的COM类工厂...失败:80040154

时间:2015-08-27 15:20:25

标签: c# .net com

在C#程序(.Net 4.5.2)中,我们使用以下模式创建COM服务器类的实例:

Type t = Type.GetTypeFromCLSID(guid, hostname);
server = Activator.CreateInstance(t);

今天,对于具有特定guid和hostname = "localhost"组合的COM服务器,我们遇到了您在主题行中重现的错误消息。在互联网上搜索我们发现了几次点击(" com dll未注册"," clsid不在注册表中",替换目标" AnyCPU" by" x86&# 34;等),但我们可以排除我们发现的所有解释。对于同一主机上的其他几台服务器,我们的程序也按预期工作,而其他客户端可以无错误地连接到服务器。

幸运的是,一位同事偶然发现用"localhost"指针替换null主机名使得该程序在我们的特定示例中起作用。不幸的是,我不明白这里发生了什么 - 有更深入了解COM模型的人能解释一下吗?

根据Type.GetTypeFromCLSID(Guid clsid, string server)的{​​{3}},'如果服务器名称为null,则此方法会自动恢复为本地计算机'。如前所述,对于本地主机上的大多数服务器,字符串" localhost"在这个代码片段工作得非常好。在这种情况下,字符串必须被null指针替换的原因是什么?

0 个答案:

没有答案