我有一个IE浏览器助手对象,它是IE8的一个工具栏插件。我还有另一个.NET .EXE应用程序(远程处理客户端),它通过公共接口使用远程处理连接到这个BHO (远程处理服务器)。当我使用服务器组件中使用的相同代码测试.EXE应用程序和临时控制台应用程序之间的通信时,它通信正常,并运行远程方法。
但是,当我尝试与BHO服务器进行通信时,发现"FileNotFoundException“无法加载文件或程序集"xxxx”,其中"xxxx“是包含服务器方法的公共接口程序集。
当我尝试与在the上的安全的BHO服务器通信时,关闭ChannelServices.RegisterChannel(tcpClientChannel,(假);,我得到错误“到远程对象的连接被强制关闭”。
如果我用简单的测试控制台应用程序重新测试它,它可以工作。
我开始相信问题出在BHO实例中远程处理的工作方式上……有没有人在BHO .NET实例中使用过远程处理,我正在使用SPICIE库使用.NET创建BHO。
远程处理接口对象命名空间返回的公共接口程序集{ WWieClassLibrary.WWieCommonClass.IGetHtmlElement WWieRemote : MarshalByRefObject,WWie.CommonClasses { public string GetElementClicked() { return ("Returned from WWieRemote ");}
public void SetElementClicked(string str)
{
MessageBox.Show("SetElement " + str);
}
}}
客户端WWieClassLibrary.WWieCommonClass.IGetHtmlElement静态主机tcpClientChannel = TcpChannel();公共静态主机remoteObject;ChannelServices.RegisterChannel(tcpClientChannel,false);remoteObject = (WWieClassLibrary.WWieCommonClass.IGetHtmlElement)Activator.GetObject(typeof(WWieClassLibrary.WWieCommonClass.IGetHtmlElement),“tcp:// TcpChannel tcpClientChannel:9002/TcpChannel”);
使用远程方法调用进行测试
remoteObject.SetElementClicked("from Client"); 服务器BHO TcpChannel tcpServerChannel =新TcpChannel(9002);TcpChannel tcpServerChannel);TcpChannel "TestWWie",WellKnownObjectMode.Singleton);
发布于 2009-11-19 01:36:51
由于默认情况下IE在保护模式下运行,因此它通常无法与更高完整性的进程进行通信。如果您的url位于intranet区域中,则可以推送禁用intranet区域的保护模式的策略。否则,您可能想要寻找其他选项,如共享内存、命名管道、隐藏的工作窗口和注册消息以及为Vista的UIPI定制的消息过滤器等。
https://stackoverflow.com/questions/1754906
复制相似问题