wom*_*omp 6 c# asp.net asp.net-mvc httpresponse asp.net-mvc-2
我刚刚完成了将项目升级到ASP.Net MVC 2(RTM)的测试运行,期待本月晚些时候发布完整的官方.Net 4.0版本.
我们的应用程序使用最小化器为我们的CSS和JavaScript.为此,它正在使用该HttpResponse.Filter属性来设置自定义过滤器.
随着升级,这个属性的setter抛出HttpException一句话"不允许过滤".看HttpResponse.Filter反射器中的属性显示:
  set
    {
        if (!this.UsingHttpWriter)
        {
            throw new HttpException(SR.GetString("Filtering_not_allowed"));
        }
...
private bool UsingHttpWriter
{
    get
    {
        return ((this._httpWriter != null) && (this._writer == this._httpWriter));
    }
}
很明显,HttpResponse在MVC2中写入输出流的方式发生了变化.有谁知道变化是什么,或者至少是一个解决方法?
编辑:   这似乎很激进.一些进一步的调查显示,ASP.Net MVC 2 RTM使用a System.Web.Mvc.ViewPage.SwitchWriter作为输出属性HttpResponse,而MVC 1使用普通老式HttpWriter.这就解释了为什么抛出异常.
但这并不能解释为什么他们选择完全破坏这一功能. 这个帖子似乎表明这只是暂时的...但这让我非常紧张......毕竟这是RTM.
任何进一步的评论都赞赏此事.
MVC 中的视图与常规 .aspx 页面不同,旨在被视为 HTML 模板系统。这里的问题源于这样一个事实:在视图已经开始执行之后,页面尝试安装响应过滤器以操纵发送到客户端的 HTML。
这种情况下的解决方案是将响应过滤器安装移至 MVC 管道的较早部分。例如,使用自定义操作过滤器,您可以重写 OnResultExecuting() 方法来安装自定义响应过滤器。这会将安装移出视图,并且不会违反简单的仅 HTML 视图的原则。
| 归档时间: | 
 | 
| 查看次数: | 2278 次 | 
| 最近记录: |