【问题标题】:Encoding issue with Response filter in asp.netasp.net中响应过滤器的编码问题
【发布时间】:2015-07-09 14:10:29
【问题描述】:

我正在处理一些在 asp.net 应用程序中使用自定义 HttpResponse 过滤器的代码。

response.Filter = new HtmlResponseFilterStream();

这个HtmlResponseFilterStream继承自MemoryStream。已重写 write 方法以获取 HTTP 响应的内容。我使用 Encoding.UTF8.GetString 来分块获取页面内容。

public override void Write(byte[] buffer, int offset, int count)
{
        var contentInBuffer = Encoding.UTF8.GetString(buffer);

        ...
 }

在我的本地机器中,如果我转到任何页面并调试代码,我可以看到变量 contentInBuffer 填充了实际的 html 内容。无论是当地的国际空间站还是国际空间站快递。 这也适用于我们的生产环境。

但是,如果我去测试机器,事情就不会按预期工作。如果我在 write 方法中调试内容(使用远程调试器)。我得到了一些奇怪的字符。所以我猜这是由于使用了一些不同的编码..也许..

生产服务器和测试服务器具有相同的规格,具有相同的操作系统和 iis 服务器版本。

我检查了 .Net 全球化设置,两台机器中的请求、响应标头和响应的编码都设置为 UTF-8

我很确定这一定与环境设置有关。不知道是和IIS还是windows有关。

有人知道吗?

【问题讨论】:

    标签: c# asp.net iis encoding utf-8


    【解决方案1】:

    奇怪的字符一定是GZip压缩造成的,它被称为“动态压缩”,通常默认不安装,但看起来你的测试机器有它。

    【讨论】:

    • 对不起,我没有提到我已经检查了动态压缩并且在所有服务器中都启用了它。所以不应该是这样的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 2011-10-02
    相关资源
    最近更新 更多