首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET MVC 2:View 輸出階段 Response.Clear 失效問題分析與追蹤

     編輯:關於ASP.NET

升級 MVC 2 後,Response.Clear() 在 View 輸出階段失效(Controller 階段正常)。Kooboo CMS Module 受影響。

原始碼追蹤

public void Clear()
{
    if (this.UsingHttpWriter) this._httpWriter.ClearBuffers();
    IIS7WorkerRequest wr = this._wr as IIS7WorkerRequest;
    if (wr != null) this.ClearNativeResponse(true, false, wr);
}

private bool UsingHttpWriter => (this._httpWriter != null) && (this._writer == this._httpWriter);

條件 UsingHttpWriter 要求 _writer == _httpWriter。MVC 2 View 執行時,_writer 被替換為 HttpWriter 以外的包裝器(如 MvcViewPage 內部 Writer),導致判斷失敗,ClearBuffers 不執行。

除錯截圖確認:

解決方向

  • 在 Controller/ActionFilter 階段完成需 Clear 的邏輯。
  • 或改用 Response.Filter 攔截輸出流。
  • 避免在 View 內呼叫 Response.Clear。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved