簡體   English   中英

如何從C#客戶端連接到VB6 Com +服務器

[英]How do I connect from a C# client to a VB6 Com+ server

我的C#類中包含以下代碼,該代碼可遠程連接到遠程計算機上的COM +服務器。

Initailly在Activator.CreateInstance失敗了,因為我在COM +服務器上沒有與啟動客戶端的用戶相同的用戶。

我已經在客戶端計算機上安裝了COM +代理存根,並將其導入到C#項目中。 在IDL文件中,只有一個接口定義_ AddressLookup ,它繼承自IDispatch ,但是在C#的對象查看器中,我似乎得到了兩個接口_ AddressLookupAddressLookup

private string CreateEarly(string server)
  {
   try
   {
    Type typeADLClass = typeof(LookupBusiness.AddressLookupClass);
    Type typeDCOM = Type.GetTypeFromCLSID(typeADLClass.GUID, 
     server, 
     true);

    object objAdd = Activator.CreateInstance(typeDCOM);

    AddressLookupClass AddressLookupClass_result = (AddressLookupClass) Marshal.CreateWrapperOfType(objAdd, typeADLClass);

   }
   catch(Exception e)
   {
    return e.Message;
   }
   return "Create - success";

  }

運行此代碼時,我得到:

無法將源對象轉換為目標類型,因為它不支持所有必需的接口。

如果我嘗試使用后期綁定:

            object[] myArguments= {"www.zenei.co.uk", "39"};
            object c;
            c = typeDCOM.InvokeMember("Gett", BindingFlags.InvokeMethod, null, objAdd, myArguments);

我得到接口不支持IDispatch

有人可以幫忙嗎?

好像有網絡端口問題,即它們被防火牆阻止了。 這可能導致了此問題。

在運行上述代碼的計算機上運行netstat,顯示COM在端口135上初始化,但隨后在新端口上返回調用(范圍為1024-5000,對RPC服務器端口進行緩存將在此找到更多詳細信息)

我們阻塞了返回端口,因此COM +服務器在DCOMCNFG中旋轉起來,但是隨后發生了超時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM