請問vb.net mvc 可以藉由progid呼叫.net framework 4.6.1 的charp enterpriceservice.component com+ 元件嗎?目前在call enterpriceservice.component元件時,都會發生
System._comobject 與enterpriceservice.component類型衝突或呼叫不到無法讀取的問題。
Using Obj As System.EnterpriseServices.ServicedComponent = Activator.CreateInstance(Type.GetTypeFromProgID("PBEAR3000.CBEAR30002", True))
Dim objArgs As Object() = {}
Dim p As New ParameterModifier()
Dim mods As ParameterModifier() = {}
objArgs = New Object() {TOBJ}
p = New ParameterModifier(objArgs.Length)
mods = New ParameterModifier() {p}
dObjOut = CStr(Obj.GetType().InvokeMember("GETDATA", BindingFlags.InvokeMethod, Nothing, Obj, objArgs, mods, Nothing, Nothing))
End Using
InvokeMember 發生錯誤
'System.Reflection.TargetInvocationException:
'引動過程的目標傳回例外狀況。 ---> System.InvalidCastException: 無法將類型 'System.__ComObject'
'的 COM 物件轉換為類別類型 'System.EnterpriseServices.ServicedComponent'。代表 COM 元件的類型執行個體,無法轉換為不代表 COM 元件的類型; 但只
'要基礎 COM 元件支援介面 IID 的 QueryInterface 呼叫,即可將其轉換為介面。\r\n\r\nServer stack trace: \r\n 於 PBEAR3000.CBEAR30002.GETDATA
'(String OrderId)\r\n 於 System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)...
Using Obj As Object = Activator.CreateInstance(Type.GetTypeFromProgID("PBEAR3000.CBEAR30002", True))
Dim objArgs As Object() = {}
Dim p As New ParameterModifier()
Dim mods As ParameterModifier() = {}
objArgs = New Object() {TOBJ}
p = New ParameterModifier(objArgs.Length)
mods = New ParameterModifier() {p}
dObjOut = CStr(Obj.GetType().InvokeMember("GETDATA", BindingFlags.InvokeMethod, Nothing, Obj, objArgs, mods, Nothing, Nothing))
End Using
InvokeMember 發生錯誤
'System.Reflection.TargetInvocationException:
'引動過程的目標傳回例外狀況。 ---> System.InvalidCastException: 無法將類型 'System.__ComObject' 的 COM 物件轉換為類別類型
'System.EnterpriseServices.ServicedComponent'。代表 COM 元件的類型執行個體,無法轉換為不代表 COM 元件的類型; 但只要基礎
'COM 元件支援介面 IID 的 QueryInterface 呼叫,即可將其轉換為介面。\r\n\r\nServer stack trace: \r\n 於 PBEAR3000.CBEAR30002.
'GETDATA(String OrderId)\r\n 於 System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)...
Using Obj As Object = CreateObject("PBEAR3000.CBEAR30002")
dObjOut = Obj.GETDATA(TOBJ) 'System.InvalidCastException: 無法將類型 'System.__ComObject' 的 COM 物件轉換為類別類型
End Using
CreateObject 發生錯誤
'System.EnterpriseServices.
'ServicedComponent'。代表 COM 元件的類型執行個體,無法轉換為不代表 COM 元件的類型; 但只要基礎 COM 元件支援介面 IID 的 QueryInterface 呼叫,即可將其
'轉換為介面。\r\n\r\nServer stack trace: \r\n 於 PBEAR3000.CBEAR30002.GETDATA(String OrderId)\r\n
'於 System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)\r\n
感謝各位大大