ASP.NET中调用组件(VB编写)出现接口的QueryInterface失败???

llm2002 2003-08-30 01:34:34
首先应该说明的几点:
1.组件是用VB6.0编写的将VBA操作编译成,用于根据已经设计好的模版生成相关的Word文档.
2.该组件的V1.0引经运行正常.
3.客户有新的要求,我将组件修改了一下,添加一个属性及修改了一个方法(修改逻辑但对外接口没变),编译成V2.0的dll文件.
4.V2.0版本在控制台应用程序中调用没问题.
5.V2.0版本在ASP.NET工程中引用时,运行时出现了以下问题:

MeaningProject.MeaningContentClass mycls = new MeaningContentClass();
mycls.CaseReasonProperty="PropertyValue";
mycls.IssueProperty= "IssueValue";
......
CaseReasonProperty为组件的公共属性,
IssueProperty为新增加的公共属性,
但是运行时出现了System.InvalidCastException接口MeaningProject._MeaningContent的QueryInterface失败.

另外:
1.我在注册V2.0组件之前,已经先将V1.0版本用RegSvr32 -u给卸载了,然后才注册V2.0组件的,还不行???
2.我将组件卸载完后将注册表中没删除的也用手工删除了,再注册新的组件,还不行??
3.我将备份起来的V1.0给再注册进去,两个版本共存了,引用旧的版本可以但是引用新的版本不行(还是在属性赋值时提示接口的QueryInterface失败)??
实在是没办法了,各位兄弟姐妹帮帮忙!!!!
...全文
141 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
llm2002 2003-09-01
  • 打赏
  • 举报
回复
思归:
谢谢了!
我都是在我本机上测试,我机器环境:Windows 2003 server +VS 2003(已经改变了)
出现了权限问题.导致对象创建出问题.
而客户服务器我没办法重新启动,今天客户上班了,我才有办法联系到人,重新启动服务器.
现在没问题了.
但是,我每重新编译一次组件都要重新启动一次,不然又出现了同样的情况.
结帖!
llm2002 2003-08-31
  • 打赏
  • 举报
回复
思归:
你好!谢谢!
现在我是在我个人的机子上调试,我新建一个新的Web工程,
环境:Windows 2003 server +VS 2003,
我调试的结果现在是调用创建Word文档的方法接口时,出现对象未设置到变量,
我认为应该是权限问题了,导致创建对象失败,而出现对象未设置到变量.

Visual Basic Source:

Public Function CreateWordDocument( _
ByVal newFilename As String , _
ByVal templatePath As String, _
ByVal docAlterUser As String _
) As Boolean
On Error GoTo myErr

dim wrd as Object
'我认为是以下创建对象失败导致,对象未设置到变量的错误!
'如果我把以下创建对象实例的语句及后面的句子注释掉,调用就没问题了.
'可能是权限不够,无法创建对象,但是好象又不大可能,
'因为V1.0组件也存在这种创建对象实例的语句.
'另外,我已经将ASPENT帐号给添加到Administrators组中也不行,
'我以前V1.0时也出现这样,把ASPNET权限提到管理员就可以了
set wrd = CreateObject("Word.Application")

......
wrd.Quit
set wrd = Nothing
CreateWordDocument = true
Exit Function
myErr:
wrd.Quit
set wrd = Nothing
CreateWordDocument = false
End Function
saucer 2003-08-31
  • 打赏
  • 举报
回复
>>>>我认为应该是权限问题了

但你V1.0不是可以工作的么?


for Word.Application
- Run DCOMCNFG
- Grant ASPNET account enough permission to run WINWORD.exe
llm2002 2003-08-31
  • 打赏
  • 举报
回复
思归:
你好!
你说的我都试过了,不行,我现在认为是权限问题,导致没办法创建对象实例
导致错误:未将对象设置到变量.但是我已经将相应的工程目录权限添加了everyone帐号,
还是不行,我想问一下到底ASP.NET中权限的是怎么回事,ASPNET帐号与Web工程有什么关系?
我要如何设置权限呢?先谢谢!
saucer 2003-08-30
  • 打赏
  • 举报
回复
以下建议也许没什么用(因为你在VS.NET里试过重新引用/编译了):

在把1.0改动生成2.0的过程中,在项目属性表的组件页里,选“二进制兼容”
saucer 2003-08-30
  • 打赏
  • 举报
回复
>>>>现在我将原来V1.0的组件进行重新编译一下,代码接口什么都不改变,调用也出错!

那问题不在这里,你有别的服务器么?有的话,生成一个新的项目,用你的V2.0组件,在
该服务器上运行
llm2002 2003-08-30
  • 打赏
  • 举报
回复
思归:
先谢谢了!
你的意思是删除临时文件(包括dotnet将非托管dll封装成托管的dll文件)
我想不是这个问题,因为我新建的ASP.NET项目中也无法调用也出现相同的情况!
现在我将原来V1.0的组件进行重新编译一下,代码接口什么都不改变,调用也出错!
我估计是版本问题,不知如何解决?
关于重启服务器,我试试看.
saucer 2003-08-30
  • 打赏
  • 举报
回复
试试(属於胡乱猜测):

1.停止IIS(有必要的话,重启服务器),把C:\WINNT\Microsoft.NET\Framework\v1.0.3705\Temporary
ASP.NET Files
下的文件全部删除

2.要是你的组件是强名的话,需要从GAC里删去,打开DOS窗口,去
C:\WINNT\assembly\GAC
目录,把你的组件所在目录删除
llm2002 2003-08-30
  • 打赏
  • 举报
回复
CSDN论坛:
"将帖子提前"功能干么有限制呀?什么你提前太频繁?
我都几个小时了没点了,文章都跑到第三页了,一点击就提示太频繁了!
还要我象一些人发"UP"来更新一下?提倡这种制造垃圾的行为????
llm2002 2003-08-30
  • 打赏
  • 举报
回复
大家帮帮忙!
llm2002 2003-08-30
  • 打赏
  • 举报
回复
panyee(快乐王子) :
你好!
我忘了说了,我已经重新添加V2.0的引用,并重新编译了整个,不行?
但是我恢复回V1.0引用还是可以用的.
panyee 2003-08-30
  • 打赏
  • 举报
回复
aspcompact=true的作用只不过是让它在aspx页面运行 asp脚本
leal 2003-08-30
  • 打赏
  • 举报
回复
先试试在aspx页面加上AspCompat属性:
<%@ Page [...] AutoEventWireup="false" AspCompat="true" %>
panyee 2003-08-30
  • 打赏
  • 举报
回复
把原来的com项目引用删除, 再添加一个新的引用进来, 重新编译

62,039

社区成员

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

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

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

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