最近在將網頁由 ASP修改成 ASP.NET的途中,
發現到.NET由參考方式去呼叫 COM+元件的寫法,
是沒辦法DeBug進入 COM+本身的程式碼(COM+由VB6撰寫),
每次修改完 COM+都必須重新compiler成dll檔,並重新掛上元件服務和引用參考,
才可以知道執行上是否有問題.
這和ASP版本的 CreatObject可以直接進行偵錯比起來十分不方便.
所以上網查找有沒有類似的寫法,偵錯時可以直接進入到COM+程式碼,
最後找到並寫出以下較方便偵錯的方法,
需要引用 using System.Reflection 命名空間
//COMName: COM+名稱
//COMMethod: COM+方法
//oArgument: 方法要用到的參數
//回傳:結果字串
private string CallCOMObject(string COMName, string COMMethod, object[] oArgument)
{
//要回傳的訊息
string StrErr = "";
try
{
//取得COM+元件的型別
System.Type oType1 = System.Type.GetTypeFromProgID(COMName);
//依型別建立物件參考
object oCOM = Activator.CreateInstance(oType1);
object oResult;
//呼叫執行物件的方法,並回傳結果
oResult = oType1.InvokeMember(COMMethod, BindingFlags.InvokeMethod, null, oCOM, oArgument);
StrErr = oResult.ToString();
oCOM = null;
oResult = null;
}
catch (Exception E)
{
StrErr = E.ToString();
}
return StrErr;
}
參考:
https://www.codeproject.com/Articles/1511/Accessing-COM-component-using-C
沒有留言:
張貼留言