2011-12-14 151 views

回答

4

Content-Length標題計數字節,而不是字符。 String.Length統計字符。你可能想要的東西沿線

Response.AddHeader("Content-Length", 
        Response.ContentEncoding.GetByteCount(output).ToString()); 
+0

謝謝!奇蹟般有效 :) – Johan 2011-12-14 16:00:57

2

你可能通過http請求傳遞XML?在這種情況下,數據以字節形式傳遞。你想要的字節長度,而不是字符長度。所以,得到這些字節的長度,而不是字符串的長度。

在這種情況下,它將使用編碼,可能是UTF16,但C#將其稱爲unicode。

你有幾個方法,可以幫助:

Encoding.Unicode.GetBytes(someString); 
Encoding.Unicode.GetByteCount(someString); 
2

如果XML不是太大,可以將其寫入MemoryStream,然後傳送MemoryStream的內容。

using (var ms = new MemoryStream()) 
{ 
    using (var writer = XmlWriter.Create(ms)) 
    { 
     // write your XML here... 
    } 
    Response.ContentLength = ms.Length; 
    Response.OutputStream.Write(ms.ToArray(), 0, ms.Length); 
}