在即將發布的Kooboo CMS 2.1.0.0中,將會升級到ASP.NET MVC 2。需要將所 有的Module也同步升級到MVC2,在升級過程中發現MVC2一旦進入View輸出階段後 ,Response.Clear將會不起作用 (Controller執行階段,這個方法仍然正常工作) ,這將會影響Kooboo CMS Module的正常運行。
在確定是MVC 2引起的問題後,於是就從Response.Clear這個方法著手,它的 代碼邏輯如下:
01 public void Clear()
02 {
03 if (this.UsingHttpWriter)
04 {
05 this._httpWriter.ClearBuffers();
06 }
07 IIS7WorkerRequest wr = this._wr as IIS7WorkerRequest;
08 if (wr != null)
09 {
10 this.ClearNativeResponse(true, false, wr);
11 }
12 }
13 <font face="Trebuchet MS">
從這段代碼,我們可以發現,ClearBuffer的條件是UsingHttpWriter這個屬性 的值為True,下面是UsingHttpWriter屬性的原型定義:</font>
1 private bool UsingHttpWriter
2 {
3 get
4 {
5 return ((this._httpWriter != null) && (this._writer == this._httpWriter));
6 }
7 }
在這裡判斷,_httpWriter和_writer變量是否相同。於是我就只能從運行時的 調試來看看這兩個變量的值分別是什麼,下面的截圖分別是_httpWriter, _writer,UsingHttpWriter運行時的值: