[ERROR](0x8002801D)Automation error Library not registered

在 Windows 2012 上執行一個呼叫VB6 COM元件透過 Microsoft Active Server Pages Object Library,
將資料直接Response到頁面上,居然發生Automation error Library not registered的錯誤!

環境:Windows 2012, VB6 COM, Microsoft Active Server Pages Object Library

 

最近同事在 Windows 2012 上執行一個呼叫VB6 COM元件透過 Microsoft Active Server Pages Object Library,

將資料直接Response到頁面上,結果居然發生「abcSystem.Runtime.InteropServices.COMException (0x8002801D): Automation error Library not registered」的錯誤,如下,

System.Runtime.InteropServices.COMException (0x8002801D): Automation error Library not registered.
於 Microsoft.VisualBasic.CompilerServices.LateBinding.InternalLateCall(Object o, Type objType, String name, Object[] args, String[] paramnames, Boolean[] CopyBack, Boolean IgnoreReturn)
於 Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateCall(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack, Boolean IgnoreReturn)
於 ASP.aspdll_aspx.__Render__control1(HtmlTextWriter __w, Control parameterContainer)

image

 

依之前「asp.net網頁Error in loading DLL錯誤處理!」一篇中檢查,該環境是有安裝ASP的哦!

相同的程式,在Windows 8.1的環境也是可以執行的!

只好在Code中加入MsgBox 訊息,讓它寫到事件顯示器中,

結果發現錯誤是發生在透過 Response 物件 Write 出去時(rsp.Write "test"),發生錯誤的!

冏…..想不出到底是那裡的問題所造成的....

 

後來想說,將 Dim rsp As Object 改成 Dim rsp As ASPTypeLibrary.Response ,

看看能不能出現更詳細的訊息讓我知道那個物件沒有註冊到,

結果程式居然OK了! 太神奇了~~~ 居然有這種事 .....

所以... 即然加入參考了,就直接用參考的物件型別,而不再宣告成 Object。

Public Sub Test()
  Dim objASP As ObjectContext
  Set objASP = GetObjectContext
  Dim rsp As Object
  Set rsp = objASP.Item("Response")
  rsp.Write "test"
  Set rsp = Nothing
  Set objASP = Nothing
End Sub

改成

Public Sub Test()
  Dim objASP As ObjectContext
  Set objASP = GetObjectContext
  Dim rsp As ASPTypeLibrary.Response
  Set rsp = objASP.Item("Response")
  rsp.Write "test"
  Set rsp = Nothing
  Set objASP = Nothing
End Sub

 

參考資訊

asp.net網頁Error in loading DLL錯誤處理!

[ASP]在Windows 2008中,使用ObjectContext.Item("Response")會有424「此處需要物件」錯誤的解決方式

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^