在asp.net中为chrome提供文本/ HTML内容显示页面文本

时间:2017-01-13 01:28:30

标签: html asp.net google-chrome

我在.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类型,但文本/ 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

1 个答案:

答案 0 :(得分:0)

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