我正在处理一些在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相关。
任何人都知道吗?
答案 0 :(得分:0)
奇怪的字符必须归功于GZip压缩,它被称为"动态压缩"通常不会默认安装,但看起来你的测试机器有它。