【发布时间】: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