Response.Clear 还是 Response.ClearHeaders

我负责的项目中有这样一段代码:

1 try {
2   Response.AppendHeader(...) // 向Response写入一段内容
3   Response.AppendHeader(...)
4   WriteContent(Response.OuputStream);
5 } catch {
6   Response.Clear(); // 清除原先写入的内容,但是并没有达到预期的目的
7   Response.AppendHeader(...) // 写入新的内容
8   Response.Write(...)
9 }

  运行时发现:当 WriteContent方法抛出异常时,代码正确的转入 catch 段,但是原先写入的HTTP头部并没有被清除!而是和新的HTTP头部混在了一起。这样造成实际输出结果混乱。

  起初以为是Buffer没有起作用的原因,后来在MSDN上看到这样的描述(http://msdn.microsoft.com/en-us/library/system.web.httpresponse.clearcontent(v=vs.100).aspx):

The Clear method does not clear header information.

  原来这个方法只清除了Content部分,所以只要在原先代码的第6行前面加上

1 Response.ClearHeaders();

   就可以了。

posted @ 2013-04-16 13:22  Haart  阅读(262)  评论(0编辑  收藏  举报