我有一个http模块,我在下面添加一个响应过滤器进行压缩。这适用于除1之外的所有API调用,即对MetaData的调用。如果我删除[BreezeController]装饰它工作正常。我认为它与动作过滤器属性有关,它将字符串返回类型转换为带有字符串内容的HttpResponse返回类型。breeze.js压缩响应过滤器失败元数据调用
我收到的错误是“异常消息:底层压缩例程的流状态不一致”。
我已经做了一些测试,其中定义为返回HttpResponse的方法工作正常。所以我认为它的方法定义为返回字符串,然后操作过滤器在运行时将其更改为HttpResponse。
任何想法,我可以得到这个工作?
这里的响应滤波器中的BeginRequest添加:
HttpApplication app = (HttpApplication)sender;
// Check the header to see if it can accept compressed output
string encodings = app.Request.Headers.Get("Accept-Encoding");
if (encodings == null)
return;
Stream s = app.Response.Filter;
encodings = encodings.ToLower();
if (encodings.Contains("gzip"))
{
app.Response.Filter = new GZipStream(s, CompressionMode.Compress);
app.Response.AppendHeader("Content-Encoding", "gzip");
}