求助:.net remoting中使用activex控件

My Teching 2009-11-03 02:56:53
背景:
在WINDOWS服务中使用某ACTIVEX控件产品(因为没有序列化标识,所以无法序列化),让该产品只在WINDOWS服务中运行(包括外部来的与ACTIVEX相关的请求都在这里执行)

做法(写了一个测试的小例子):
1.制作了一个继承自MarshalByRefObject的自定义类A(在这里使用ACTIVEX相关的所有操作)。
2.制作了一个WINDOWS服务的项目,其中ONSTART的方向里用了单线程(对于使用ACTIVEX控件来说这是必须的),远程初始化类A的实例(在A的构造方法中初始化了该ACTIVEX控件),并且“RemotingServices.Marshal((m), "MyRemoteObject");”。
3.制作了一个测试的控制台程序,其中获取已经通过WINDOWS服务生成的远程对象,并可以调用在类A中写的一个小public方法,返回“Hello World!”。
注:服务端与客户端都已经写好配置文件,设置为“wellknown”的“Singleton”模式,在客户端执行了“RemotingConfiguration.Configure("SimpleClient.exe.config");”,并且在客户端用“RemotingConfiguration.GetRegisteredWellKnownClientTypes()”也能查出来有1个值,所以上面才能返回“Hello World!”,这应该证明通信是正常的吧?

现象:
1.虽然执行简单的公共方法可以返回“Hello World!”,并且为证明对类类型的访问也是正常,我又特意写了一个类B,简单的几个属性值,然后在在类A中写一个公共的方法,对类B进行访问,没问题;可是,如果不是对类B,而是对已经初始化的ACTIVEX控件进行访问,就会报错,说什么“因为类A是远程对象的代理,所以无法在该接口上调用远程对象的属性或者方法”。
2.我只能在类A的构造方法里初始化了ACTIVEX控件之后立即使用其各个属性和方法才有效,但这样没有实际意义。

问题:
是我哪里的设置不对,还是ACTIVEX控件根本无法通过.NET remoting来访问呢?谢谢
...全文
43 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
My Teching 2009-11-03
  • 打赏
  • 举报
回复
补充:
以上提问中的例子是根据以下网址中的介绍改写的,该网址中没有涉及到ACTIVEX的使用
http://www.csharphelp.com/archives2/archive460.html

8,834

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 组件/控件开发
社区管理员
  • 组件/控件开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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