iT邦幫忙

0

請問vb.net mvc 可以藉由progid呼叫.net framework 4.6.1 的charp enterpriceservice.component com+ 元件嗎?

  • 分享至 

  • xImage

請問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

感謝各位大大

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答