2011-12-05 7 views
-5

私のコード次のようにされています。その後Response.outputサイズを取得しますか?

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 
+2

エラーは?????? –

+0

基本ストリームは 'Length'をサポートしていません。それほど多くはできません。 – Oded

+0

@Oded長さをサポートしていないことを知っています。そのため、Response.Ouputオブジェクトのサイズをどのように取得できるかを尋ねています。あなたの応答は何の価値も付加しません。 – NomenNescio

答えて

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 ? 
2

Response.OutputStreamLengthプロパティをサポートしていません。あなたは長さを得ることができません。 1つの問題は、通常の場合のようにKeep-Aliveが有効な場合、StreamResponseよりも長く存続する可能性があることです。だから、Lengthを手に入れることはできません...しかし、...

ここでストリームはコンテンツだけでなく、ヘッダーも送信しています。そのため、使用する方法を使用することは完全に不適切です(結果として得られるヘッダーが間違っているため)Lengthを入手できたとしても、それはあなたが望むものではありません。

そして、それはとにかく、再び不可能です:あなたが設定しようとしているヘッダはそのStreamに外出されるものの一部です....問題を参照してください?

フォスターズはあなたにこの問題を解決しようとする別のルートを与えました。ストリームのものではなく、実際に測定したいものの長さを取得する必要があります。

+0

したがって、生成されたファイルの長さを渡す方法はありませんか? – NomenNescio

+0

*ファイル*の長さを渡す必要があります。それはあなたがやっていることではありません。ファイルを書き込んでいる 'Stream'は、ファイル自体と同じものではありません。そのコードに渡す*ファイル自体の長さを取得します。 –

関連する問題