asp.net

时间:2015-07-09 14:10:29

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

我正在处理一些在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);

        ...
 }

在我的本地机器中,如果我转到任何页面并调试代码,我可以看到填充了实际html内容的变量 contentInBuffer 。两者都有本地ISS或者快递。 这也适用于我们的生产环境。

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

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

我检查了.Net Globalization设置,并且两台计算机中的请求,响应标头和响应的编码都设置为 UTF-8

我很确定这必须与环境设置有关。不确定它是否与IIS或Windows相关。

任何人都知道吗?

1 个答案:

答案 0 :(得分:0)

奇怪的字符必须归功于GZip压缩,它被称为"动态压缩"通常不会默认安装,但看起来你的测试机器有它。