我的代码现在是这样的:
var xmlSerializer = new XmlSerializer(typeof(DataSet));
xmlSerializer.Serialize(Response.Output, ds);
之后我想显示大小,但这给了我一个错误:
Response.AddHeader("Content-Length", Response.OutputStream.Length.ToString());
错误是
NotSupportedException was unhandled by user code
答案 0 :(得分:2)
Response.OutputStream
不支持Length
属性;你不能得到长度。一个问题是,Stream
如果通常情况下Response
已启用,则Keep-Alive
可能会比Length
更长。这就是为什么你根本得不到Content-Length
......但是......
另请注意,此处的Stream不仅仅发送内容 - 它还会发送标题。这使得完全不适合使用你希望如何使用它(因为你得到的Length
标题是不正确的。)所以,即使你可以得到Stream
,它也不会是你想要的。
无论如何,这是不可能的:你试图设置的标题是 的一部分{{1}}会发生什么......看到问题?
但是,FosterZ给了你一条不同的路线试图解决这个问题;你需要得到你真正想要测量的长度 - 而不是流。答案 1 :(得分:1)
我在做什么?以下矿井代码如下所示,您可能会得到一些想法或提示:
string output = encoding.GetString(memoryStream.ToArray());
memoryStream = new MemoryStream(output.Length);
byte[] buffer = encoding.GetBytes(output);
//buffer.Length(); is this the length you want ?