我在這裏使用接受的答案:Transmit generated XML file without saving to disk生成XML,內容長度不正確
如何知道內容長度?即時通訊使用doc.OuterXml.Length.ToString()
但即時消失像20-30字符的結尾。
我在這裏使用接受的答案:Transmit generated XML file without saving to disk生成XML,內容長度不正確
如何知道內容長度?即時通訊使用doc.OuterXml.Length.ToString()
但即時消失像20-30字符的結尾。
Content-Length
標題計數字節,而不是字符。 String.Length
統計字符。你可能想要的東西沿線
Response.AddHeader("Content-Length",
Response.ContentEncoding.GetByteCount(output).ToString());
你可能通過http請求傳遞XML?在這種情況下,數據以字節形式傳遞。你想要的字節長度,而不是字符長度。所以,得到這些字節的長度,而不是字符串的長度。
在這種情況下,它將使用編碼,可能是UTF16,但C#將其稱爲unicode。
你有幾個方法,可以幫助:
Encoding.Unicode.GetBytes(someString);
Encoding.Unicode.GetByteCount(someString);
如果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);
}
謝謝!奇蹟般有效 :) – Johan 2011-12-14 16:00:57