C#创建动态对象报错

cyh30070 2014-08-16 02:08:09
用VS2010 C#语言,注册好dll文件后,在WinForm项目里面,可以引用COM组件创建动态对象。但是,在AspNet项目里面,用同样的代码创建会报错,代码如下。
dynamic dicVoucher1 = Activator.CreateInstance(Type.GetTypeFromProgID("KFO.Dictionary"));

报错信息如下。
System.InvalidCastException: 从 IClassFactory 为 CLSID 为 {09AFE6FD-5BDB-11D1-9C2A-127658000000} 的 COM 组件创建实例失败,原因是出现以下错误: 80004002。

请各路神仙帮忙分析下到底是什么原因。
...全文
155 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyh30070 2014-08-16
  • 打赏
  • 举报
回复
不支持此接口(异常来自HRESULT:0x80004002(E_NOINTERFACE))
真相重于对错 2014-08-16
  • 打赏
  • 举报
回复
errlook.exe 输入错误码看什么错误
cyh30070 2014-08-16
  • 打赏
  • 举报
回复
由于项目的限制,只有把业务数据封装成KFO中的对象,才能作为参数去调用别的dll文件。
cyh30070 2014-08-16
  • 打赏
  • 举报
回复
KFO这个dll是VB写的,问题是我在VS2010的Form项目中创建是没问题的,只是在ASPNET下才会报错。
  • 打赏
  • 举报
回复
因为把COM定性为是15年前的糟粕,所以才出现了.net平台技术。COM需要一堆的注册,而且很容易引擎(安装和卸载时的注册表)冲突,造成注册紊乱。你可以先确保在windows上完全卸载(unreg)你的COM组件的注册,然后确保重新注册成功,使用一些比较机制验证其注册是正常的,再来在.net程序中使用。 尽可能不要写反射代码。反射让你失去了调试的能力。如果在反射时遇到问题不好解决,先放弃反射,写一个不经反射就能强类型执行的测试程序去及时发现问题。不要纠结于反射代码。
  • 打赏
  • 举报
回复
COM的东西根本不靠谱(所以尽可能不要调用COM),它无法调试。 你只有去看看你的 COM 组件为什么不能实例化的问题,先不要纠结.net平台。例如你可以在VBA中创建此 COM 组件对象,看看是否报错。
cyh30070 2014-08-16
  • 打赏
  • 举报
回复
已经设了权限,还是不行。
linrachel 2014-08-16
  • 打赏
  • 举报
回复
权限问题??

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧