在 asp.net 中向镶边提供文本/HTML 内容会显示页面文本



我在.aspx文件中动态生成一个html页面,如下所示:

Response.Clear()
Response.ClearContent()
Response.ClearHeaders()
Response.Buffer = True
Response.ContentType = "text/HTML"
Response.AddHeader("Content-Disposition", "inline")
Response.OutputStream.Write(FilledBuffer, 0, FilledBuffer.Length)
Response.OutputStream.Flush()
Response.OutputStream.Close()
Response.End()

其中 FilledBuffer(一个字节数组)是有效的 html,如下所示:

<!DOCTYPE html>
<html>
<head>
<title>My Page</title>
</head>
<body>
<div>content</div>
</body>
</html>

当我在IE8 +中查看此内容时,它会呈现一个html页面,但是在Chrome中,它将html显示为文本。 我的第一个想法是MIME类型,但text/HTML对于html是正确的,所以我不知所措。

我一定在这里错过了一些非常简单的东西......否则互联网将无法正常工作...

在 fiddler 中,呈现 html 的标准 aspx 页与上述非工作页之间的请求是相同的,具体如下:

GET http://localhost:1202/test.aspx HTTP/1.1
Host: localhost:1202
Connection: keep-alive
Accept:    text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like     Gecko) Chrome/49.0.2623.112 Safari/537.36
Referer: http://localhost:1202/Mypage.aspx
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8

响应流使用的字节数组是使用 unicode 编码创建的,因此输出确实是 unicode。 有趣的是,IE似乎并不关心这一点,但Chrome认识到这不是html,并简单地将页面呈现为文本。Chrome 没有显示赠品 unicode 双包机宽度,检查页面源代码显示一个看起来完全有效的 html 文件。 直到在小提琴手中检查,才检测到 unicode,从而导致发现不正确的转换。

最新更新