ASP.NET MVC 2: 视图输出过程中,Response.Clear不正常工作2011-08-28 博客园 阿不在即将发布的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运行时的值: