生成XML,内容长度不正确

时间:2011-12-14 15:26:27

标签: c# asp.net xml

我在这里使用接受的答案:Transmit generated XML file without saving to disk

我如何知道内容长度?我正在使用doc.OuterXml.Length.ToString(),但最后我失踪了20-30个字符。

3 个答案:

答案 0 :(得分:4)

Content-Length标头计算字节数,而不是字符数。 String.Length计算字符数。你可能想要一些

的内容
Response.AddHeader("Content-Length", 
                   Response.ContentEncoding.GetByteCount(output).ToString());

答案 1 :(得分:2)

您可能通过http请求传递XML?在这种情况下,数据作为字节传递。您需要以字节为单位的长度,而不是字符长度。因此,获取这些字节的长度,而不是字符串的长度。

在这种情况下,它将使用编码,可能是UTF16,但C#将其称为unicode。

您可以使用以下几种方法:

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

答案 2 :(得分: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);
}