2008-09-23 63 views
0

我創建了一個從ServicedComponent派生的.net類,並將它註冊到COM +。該組件實現的接口有一個返回IDataReader的方法。當我從我的客戶端應用程序調用服務組件時,我可以調用返回IDataReader的方法,但沒有任何問題,但只要我在該對象上調用某個方法,就會得到以下異常: 「System.Runtime.Remoting.RemotingException:This遠程代理服務器沒有通道接收器,這意味着服務器沒有正在監聽的註冊服務器通道,或者該應用程序沒有合適的客戶端通道與服務器交談。「.net COM +返回IDataReader對象

我公開地破解了我的代碼,並意識到如果我創建了自己的可串行化的IDataReader實現(具有Seri​​alizable屬性),它將工作。如果實現派生自MarshalByRefObject,則失敗。

那麼,是否有可能通過COM + ServicedComponents的引用返回標準.net對象,如果有的話,我需要做些什麼來實現它?

回答

1

當兩者管理的COM +客戶端和COM +組件,在CLR試圖成爲「智能」,並嘗試切換到使用.Net遠程處理作爲溝通渠道。

爲了使這個場景正常工作,您可以爲實現IDataReader的對象註冊遠程通道。

不幸的是,我無法訪問我幾年前做過這些的代碼,所以我無法發佈樣本。 :-(