【发布时间】:2010-04-06 18:32:39
【问题描述】:
我刚刚完成了将项目升级到 ASP.Net MVC 2 (RTM) 的测试运行,期待本月晚些时候发布完整的官方 .Net 4.0 版本。
我们的应用程序正在为我们的 CSS 和 javascript 使用最小化程序。为此,它利用HttpResponse.Filter 属性设置自定义过滤器。
升级后,此属性的设置器会抛出 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 使用 System.Web.Mvc.ViewPage.SwitchWriter 作为 HttpResponse 的输出属性,而 MVC 1 使用普通的旧 HttpWriter。这就解释了为什么抛出异常。
但这并不能解释为什么他们选择完全破坏此功能。 This thread 似乎表明这只是暂时的……但这让我很紧张……毕竟这是 RTM。
对此表示赞赏。
【问题讨论】:
-
不管怎样,MVC 2 RTM 已经发布:microsoft.com/downloads/…
-
谢谢 - 这就是我要升级到的。我应该让标题更清楚。
-
您尝试做的事情可能一开始就没有得到支持。如果您实际上是在尝试挂钩静态内容的提供方式,请不要通过 WebForms 视图引擎来实现这一点。你到底想做什么?为什么你需要一个过滤器来解决这个问题?
-
为什么不支持?而且我们没有通过视图引擎——我们只是在查看渲染结果。关键是这个改变甚至打破了简单的过滤,比如这个例子:4guysfromrolla.com/articles/120308-1.aspx。您基本上永远不能设置过滤器属性。
-
另外,如果必须的话,我对重构旧代码以使用不同的方法没有疑虑。我想我的问题是 - “为什么会发生这种情况,它是永久性的,是否有解决方法?”
标签: c# asp.net asp.net-mvc asp.net-mvc-2 httpresponse