2009-11-18 89 views
1

我有一個IE瀏覽器輔助對象,它是IE 8的工具欄插件。 我有另一個.NET .EXE應用程序(遠程處理客戶端)通過遠程連接通過遠程處理通用接口。 當我使用服務器組件中使用的相同代碼測試.EXE應用程序和TEMP控制檯應用程序之間的通信時,它通信正常,並運行遠程方法。.NET IE瀏覽器BHO遠程處理

但是,當我嘗試與TCP通道上的安全通信與BHO服務器ON ChannelServices.RegisterChannel(tcpClientChannel,true); ,我得到一個「FileNotFoundException」無法加載文件或程序集「xxxx」,其中「xxxx」是包含服務器方法的通用接口程序集。

當我嘗試與TCP通道上的安全通信與BHO服務器OFF ChannelServices.RegisterChannel(tcpClientChannel,false); ,我得到錯誤「與遠程對象的連接被強制關閉」。

如果我用簡單的測試控制檯應用程序重新測試它的工作。

我開始相信問題是在遠程處理方式在BHO實例內工作的方式......有沒有人在BHO .NET實例中使用Remoting,我使用SPICIE庫來創建使用.NET的BHO。

用於遠程處理接口對象 命名空間WWie.CommonClasses

通用接口組件 { 類WWieRemote:MarshalByRefObject的,WWieClassLibrary.WWieCommonClass.IGetHtmlElement { 公共字符串GetElementClicked() { 返回( 「從WWieRemote返回」); }

public void SetElementClicked(string str) 
    { 
     MessageBox.Show("SetElement " + str); 
    } 

} 

}

CLIENT APP 靜態的TcpChannel tcpClientChannel =新的TcpChannel(); public static WWieClassLibrary.WWieCommonClass.IGetHtmlElement remoteObject;ChannelServices.RegisterChannel(tcpClientChannel,false); (WWieClassLibrary.WWieCommonClass.IGetHtmlElement),「tcp:// localhost:9002/TestWWie」);

與遠程方法調用

remoteObject.SetElementClicked("from Client"); 

SERVER BHO 的TcpChannel tcpServerChannel =新的TcpChannel(9002)測試;ChannelServices.RegisterChannel(tcpServerChannel,true); 012ofRemotingConfiguration.RegisterWellKnownServiceType(typeof(WWieClassLibrary.WWieCommonClass.IGetHtmlElement),「TestWWie」,WellKnownObjectMode.Singleton);

回答

1

由於默認情況下IE在保護模式下運行,它通常無權訪問與更高的完整性進程進行通信。如果您的URL位於Intranet區域中,則可以推送禁用Intranet區域的保護模式的策略。 否則,您可能需要尋找其他選項,如共享內存,命名管道,隱藏工作窗口&已註冊消息&針對Vista UIPI的自定義消息過濾器等。

+0

Appologies我忘了說在客戶端和服務器在同一臺機器上運行,所以網址爲tcp://本地主機:9002 /服務名稱 – PrimeTSS 2009-11-18 21:09:08

+0

這是錯誤即時得到 System.Net.Sockets.SocketException了未處理 消息= 源 「的現有連接被強行關閉遠程主機」= 「mscorlib程序」 錯誤碼= 10054 NativeErrorCode = 10054 的ExecutionContext,ContextCallback回調,對象狀態) 在System.Threading.ThreadHelper.ThreadStart() InnerException: – PrimeTSS 2009-11-18 21:13:17

+0

Netstat -a將端口顯示爲監聽,並且我關閉了防火牆並將本地主機添加到了tru sted sites – PrimeTSS 2009-11-18 21:15:43