Welcome 微信登录

首页 / 网页编程 / ASP.NET / ASP.NET MVC 2: 视图输出过程中,Response.Clear不正常工作

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运行时的值: