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

  • 6542
  • 0
  • ASP
  • 2013-07-31

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

前言


在Windows 2003上Run得粉正常的asp程式搬到了Windows 2008 Run時,卻發生了Error Number:424, Error Description:此處需要物件的錯誤!
 

研究

image
程式如下,


Dim objASP As ObjectContext
Dim rsp As Object
Set objASP = GetObjectContext()
Set rsp = objASP.Item("Response")


發現錯誤是發生在 Set rsp = objASP.Item("Response") 這行! 參考如何在Windows 2008 R2 上的IIS7.5執行ASP,並且可使用COM+?
做法是要將元件服務中的Class屬性中->進階的Tab中->IIS支援(允許IIS內建內容(T))勾選起來就可以了!
多加上圖示說明如下,

image

2013/07/31 補充

事隔多年後的今天,有個客戶要將windows 2003移機到windows 2008 環境上,結果又發生了一樣的錯誤!

一直想不起來到底是那裡的問題。後來檢視程式碼後,就記起來了。

以下補充詳細的錯誤訊息,

'/TRV3' 應用程式中發生伺服器錯誤。
________________________________________
此處需要物件
描述: 在執行目前 Web 要求的過程中發生未處理的例外情形。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。

例外詳細資訊: System.Runtime.InteropServices.COMException: 此處需要物件

原始程式錯誤:
行 356:  Call objTbl.Show(lngPageNo, intAlign, intSortType, strTableAttr, blnShowHeader, blnToString, blnShowPageControlLine)
 

原始程式檔: ASPGrid20.aspx    行: 356

堆疊追蹤:
[COMException (0x800a01a8): 此處需要物件]
   Microsoft.VisualBasic.CompilerServices.LateBinding.InternalLateCall(Object o, Type objType, String name, Object[] args, String[] paramnames, Boolean[] CopyBack, Boolean IgnoreReturn) +796
   Microsoft.VisualBasic.CompilerServices.LateBinding.LateCall(Object o, Type objType, String name, Object[] args, String[] paramnames, Boolean[] CopyBack) +23
   ASP.fnASPGRIDByArrSrc(Object vntCtlFld, Object strTitle, Object vntData, Object aryParentID, Object aryCatalogID, Object aryCaption, Object aryCaptionAttr, Object arySortOrder, Object aryIsHidden, Object aryFormatString, Object aryTDAttr, Object aryNeedSuppress, Object aryScriptCode, Object intKeyIndex)
   in ASPGrid20.aspx:356

Hi, 

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

請大家繼續支持 ^_^