這是糾結的。經典ASP,Cookies和VB.NET COM +對象
我已經交出了一個用傳統的ASP編寫的網站,有很多幕後的東西在VB6 COM +對象中通過Server.ObjectCreate()實例化從ASP頁面調用。對於這個化身,VB6例程已經轉換爲VB.NET,只需運行Visual Studio 2003轉換器工具,然後將該解決方案文件升級到VS 2008.因此,有一千個和一個可能的錯誤來源。
一說是給我找麻煩了VB6模塊通過以下形式的線清除一堆響應餅乾:
ASPResponse.Cookies("SysUserCode") = ""
凡ASPResponse被定義爲:
Private ASPResponse As ASPTypeLibrary.Response
,並設置通過對象激活:
Set ASPResponse = objContext("Response")
在這個mod的VB.NET轉換ULE,這些線路成爲
ASPResponse = ContextUtil.GetNamedProperty("Response")
和
ASPResponse.Cookies("SysUserCode")() = ""
(注意額外的對括號。不是一個VB的人,我不確定語法的意思。)
好的,這裏的問題是:當這個代碼在我的機器上執行時,該行給出了VB錯誤13,錯誤描述爲「指定的轉換無效」。咦?什麼演員?
順便說一句,這個模塊在同事機器上運行良好,他看不到我的機器和他的相關組件的配置有任何不同。
我完全不知所措。谷歌搜索給了我一堆關於VB.NET cookie的東西,或者VB.NET的COM組件,但是與傳統的ASP cookie沒有任何關係。
我們都在IIS上運行。 – 2011-02-08 22:45:00
進一步調查:訪問ASPResponse的Cookies成員時,看起來「無效的轉換」實際上正在發生。任何訪問ASPResponse.Cookies的任何代碼都會拋出Specified Cast無效的異常。它讓我懷疑配置中是否有什麼問題,以便從ASP頁面傳入的內容即使被命名屬性「Response」訪問,實際上也不是ASPTypeLibrary.Response對象。只是猜測。仍然徹底困惑。 – 2011-02-08 23:45:31