2010-07-21 65 views
1

這條線:無法設置Response對象在ASP經典

set Response = nothing 

與失敗,錯誤現在

"Microsoft VBScript runtime error '800a01b6' 

Object doesn't support this property or method: 'Response' " 

,我能想到的任何數量的原因,發動機可能不希望的讓我做這樣一個看似愚蠢的事情,但我不確定缺少一種方法可以阻止我。

編輯:這是我想用這個做的一個例子。

class ResponseBufferEphemeron 
    private real_response_ 
    private buffer_ 

    private sub class_initialize 
     set real_response_ = Response 
    end sub 

    private sub class_terminate 
     set Response = real_response_ 
    end sub 

    public function init (buf) 
     set buffer_ = buf 
     set init = me 
    end function 

    public function write (str) 
     buffer_.add str 
    end function 
end class 

function output_to (buf) 
    set output_to = (new ResponseBufferEphemeron).init(buf) 
end function 

dim buf: set buf = Str("Block output: ") ' My string class ' 
with output_to(buf) 
    Response.Write "Hello, World!" 
end with 

Response.Write buf ' => Block output: Hello, World! ' 
+0

你想做什麼? – 2010-07-21 20:38:42

回答

0

您無法將響應設置爲空。

ASP Response對象用於從服務器向用戶發送輸出。

你想做什麼?如果你想結束響應用戶,使用

Response.End 
+0

「不能」在絕對禁止的引擎? 我實際上正在嘗試做一些非正統的事情,涉及重定向Response.Write的一個小的模板系統,我擺弄着。我希望塊中的所有Response.Write調用都被髮送到不同的對象。 由於種種原因,這可能是,實際上可能是一個可怕的想法,但我希望它能夠正常工作,部分原因在於它的部分原因,部分原因是我無法說服自己這是一個可怕的想法,直到我成功地將它炸燬在我的臉上。 – 2010-07-21 20:59:36

0

好了,我在這裏找到了答案:http://blogs.msdn.com/b/ericlippert/archive/2003/10/20/53248.aspx

所以我們特例,VBScript中,使檢測當編譯包含對Response.Write的調用的代碼,並且在名爲Response的全局名稱空間中存在一個指定的項目,該項目實現IResponse::Write。我們爲產生一個有效的早期呼叫,這種情況只有