2010-11-01 31 views
0

我執行下面的C#代碼的測試環境和PROD服務器:實例化COM類給了一個錯誤

此代碼檢查,如果它能夠在服務器上實例化COM類:

 try 
      { 
       Type creatorType = Type.GetTypeFromProgID("A.B"); 

       MessageBox.Show("Trying to create instance for :" + "A.B"); 

       creator = (IMyInterface)Activator.CreateInstance(creatorType); 

       MessageBox.Show("A.B object instance is : " + creator.GetType().ToString()); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 

此代碼在我的機器上正常工作,測試環境但不在PROD中。在該行 PROD上,我得到一個錯誤信息:「類型的值不能爲null.Parameter名」: - >

creator = (IMyInterface)Activator.CreateInstance(creatorType); 

,所需COM PROD上server.What dll安裝這裏我錯過?

謝謝。

+0

您可能想提供您收到的錯誤消息嗎?什麼是COM錯誤? – Aliostad 2010-11-01 12:14:36

+0

我在我的問題中提到了錯誤消息:「 值不能爲空。參數名稱:類型 – Jimmy 2010-11-01 12:17:01

+1

似乎真正的問題是爲什麼'Type.GetTypeFromProgID(」AB「)'返回null?通常的答案是該組件不在那裏,或者有,但沒有註冊,那種事 – 2010-11-01 12:18:19

回答

2

那麼,在那一行上,我猜只有creatorType可以爲null。並且因爲creatorType由Type.GetTypeFromProgID返回,所以該方法可能會返回(如MSDN所述):

與指定ProgID關聯的類型,如果progID是註冊表中的有效條目並且類型與其關聯;否則爲空。

所以,這可能意味着你的COM DLL沒有安裝在你的服務器上。你可以在註冊表中找到你的COM DLL嗎?

+0

謝謝安德烈帕納....是的,問題是ProgId從註冊表中缺少HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes。因此,creatorType返回null。 – Jimmy 2010-11-02 06:49:11