[英]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#的對象查看器中,我似乎得到了兩個接口_ AddressLookup
和AddressLookup
。
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.