2017-01-13 23 views
0

を示していますは、私は動的にこのような.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には正しいので、私は迷っています。

私はここで非常に単純な何かが欠けする必要があります...またはインターネットは動作しません...

シオマネキで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 
+0

フィドラーでは、コンテンツは<! D O C T Y P E時間T MがL>< h t m l >< h e a d >< t i t l e > M Y Pおそらくユニコードのように見える各チャーター間のスペースでのG E< b o d y >< d i v >< h 1 > C 0のN t個のE N T< d i v >?私はresponse.encoding = "utf-8"を追加しました。 – kpg

+0

異なる_response_ヘッダーを作業と非作業の間に表示する必要があります。 – Jacob

+0

解決済み - 作業中のファイルが遅すぎます。 System.Text.Encoding.Unicode.GetBytes(sb.ToString)で文字列からバイト配列を作成しました。System.Text.Encoding.UTF8.GetBytes(sb.ToString)にする必要があります。 – kpg

答えて

0

バイト配列は、ユニコード符号化を使用して作成された、従って出力は確かにユニコードでした。興味深いことに、IEはこれに気を付けるようには見えないが、Chromeはこれがhtmlではなく、単にページをテキストとして表示していることを認識していた。無料のユニコードダブルチャーター幅はChromeでは表示されず、ページソースを調べると完全に有効な見た目のhtmlファイルが表示されました。誤った変換の発見につながるユニコードが検出されたのは、フィドラーの検査までではありませんでした。

関連する問題