我将以下C#代码执行到Test环境和PROD服务器:
此代码检查它是否能够在服务器上实例化COM类:
try
{
Type creatorType = Type.GetTypeFromProgID("A.B");
MessageBox.Show("Trying to create instance for :" + "A.B");
creator = (IMyInterface)Activator.CreateInstance(creatorType);
MessageBox.Show("A.B object instance is : " + creator.GetType().ToString());
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
此代码在我的机器,测试环境中正常工作,但在PROD中没有。 在PROD上,我收到一条错误消息:“值不能为null.Parameter name:type”在该行: - >
creator = (IMyInterface)Activator.CreateInstance(creatorType);
PROD服务器上安装了所需的COM dll。我在这里缺少什么?
感谢。
答案 0 :(得分:2)
那么,在那一行,我猜只有creatorType可以为null。并且因为type.GetTypeFromProgID返回了creatorType,所以该方法可能会返回(如MSDN所说):
与指定的ProgID关联的类型,如果progID是注册表中的有效条目并且类型与之关联;否则,null。
因此,这可能意味着您的COM dll未在服务器上安装正常。你能在注册表中找到你的COM dll吗?