Encoding 在经典asp页面中禁用缓冲区时显示不需要的字符

Encoding 在经典asp页面中禁用缓冲区时显示不需要的字符,encoding,asp-classic,buffer,Encoding,Asp Classic,Buffer,我和经典asp合作了十多年,我不记得见过这个问题。 这是我的密码: <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> <% Option Explicit %> <% Response.Expires = -1 Response.CacheControl = "No-cache" Response.Charset = "windows-1252" Response.Buffer = false

我和经典asp合作了十多年,我不记得见过这个问题。 这是我的密码:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<% Option Explicit %>
<%


    Response.Expires = -1
    Response.CacheControl = "No-cache"
    Response.Charset = "windows-1252"
    Response.Buffer = false
    Server.ScriptTimeout = 300

%>
hello
world
with
unwanded
characters
在开头和结尾添加了一些字符,我不知道为什么,但它似乎与缓冲区有关。如果我设置Buffer=True,它可以解决问题,但是因为实际页面将返回大量数据,所以我必须将缓冲区设置为false

我检查了页面编码,一切都很好,文件保存在windows-1252编码中。 IIS配置与站点上没有任何问题的其他页面相同

我不明白这些字符是从哪里来的,但我想它一定与编码有关,有人知道吗


谢谢

当我在web.config文件中添加以下URL重写规则时,同样的问题开始出现。这将清空服务器HTTP头

<rule name="Remove Server header">
    <match serverVariable="RESPONSE_Server" pattern=".+" />
    <action type="Rewrite" value="" />
</rule>


删除规则可以解决这个问题。我不知道这是为什么,但我确实解决了这个问题。

当我在web.config文件中添加以下URLRewite规则时,同样的问题开始出现。这将清空服务器HTTP头

<rule name="Remove Server header">
    <match serverVariable="RESPONSE_Server" pattern=".+" />
    <action type="Rewrite" value="" />
</rule>


删除规则可以解决这个问题。我不知道这是为什么,但肯定为我解决了这个问题。

您发送了多少要关闭缓冲的内容,如果您添加周期性
响应,您是否看到了同样的问题。刷新
而不是全面关闭缓冲?请尝试其他浏览器。尝试分析原始服务器响应以查看实际发送的内容。我最终启用了缓冲区,并将数据以较小的块发送到浏览器进行响应。在每个块之间刷新,效果良好。我仍然很好奇为什么它会在禁用缓冲区的情况下这样做,但因为我有一个工作解决方案,而且没有太多时间,我想我会继续下去……这里的情况也是一样……看起来额外的字符会随着打开/关闭asp标记的位置出现。字符总是十六进制的。此外,周围的空白将更改字符。找不到问题的原因。我的网站也有同样的问题。奇怪的是,我无法重现这个问题;只有某些客户可以。他们尝试了Chrome和其他浏览器。在我的例子中,奇怪的字符几乎到处都被插入…甚至在标题标签中。你发送了多少要关闭缓冲的内容,如果你添加周期性
响应,你是否也会看到同样的问题。刷新
而不是整批关闭缓冲?尝试其他浏览器。尝试分析原始服务器响应以查看实际发送的内容。我最终启用了缓冲区,并将数据以较小的块发送到浏览器进行响应。在每个块之间刷新,效果良好。我仍然很好奇为什么它会在禁用缓冲区的情况下这样做,但因为我有一个工作解决方案,而且没有太多时间,我想我会继续下去……这里的情况也是一样……看起来额外的字符会随着打开/关闭asp标记的位置出现。字符总是十六进制的。此外,周围的空白将更改字符。找不到问题的原因。我的网站也有同样的问题。奇怪的是,我无法重现这个问题;只有某些客户可以。他们尝试了Chrome和其他浏览器。在我的例子中,奇怪的字符几乎到处都被插入…甚至在标题标签中。