1

我正在调试一个带有 ASP.NET 响应过滤器的 HttpModule。这会动态重写部分呈现的 SharePoint WCM 页面。发布页面在 Server 2003 和 Server 2008 上的 SP2007 中呈现良好。但是,等效页面无法在 Server 2008 R2 / IIS7 上的 SP2010 B2 中呈现。ASP.NET 返回以下错误:

后缓存替换与修改响应缓冲区的 IIS 集成管道中的模块不兼容。管道中的本机模块已修改与托管后缓存替换回调关联的 HTTP_DATA_CHUNK 结构,或者托管过滤器已修改响应。

此错误与KB #2014472一致。然而:

  1. 在网站集级别为匿名和经过身份验证的访问禁用缓存
  2. 母版页或布局页上似乎没有任何替换控件
  3. IIS 7 设置都是默认设置

这发生在例如 /pages/default.aspx 上。似乎我错过了一些与缓存相关的东西......但是什么?

4

2 回答 2

3

也许您现在已经找到了合适的解决方案,但我偶然发现了同样的问题。

我可以通过在 IIS 7 中打开站点的“页面和控件”并将Buffer选项设置为False来解决它。

于 2010-05-19T08:01:25.613 回答
0

更新

这是 MS Dev Support 对此问题的官方“答案”。

问题:
在 ASP.NET 中,在以下情况下修改由另一个进程呈现的 HTML 的响应过滤的替代方法是什么:
1. 无法修改其他进程
2. 必须支持后缓存替换

回答:
“是的,你的问题很清楚,官方声称不支持。因为缓存后替换会将某些替换块组合到响应字节中,而响应过滤期望过滤响应的原始字节(不是修改). 所以之前组合的替换块不能再保留了。

到目前为止,微软还没有替代方案。”

于 2010-04-08T15:29:02.890 回答