繰り返しますが、MVC初心者に質問します。経験不足をお許しください。
MVC ルートを使用して大きな XML ファイルを返す状況があります。場合によっては、非常に大きくなることがあります。現在、私は StringBuilder を使用して必要な XML 出力を作成し、次のように返しています。
var sb = new StringBuilder();
XmlObject.WriteXml(sb);
return Content(sb.ToString(), "text/xml", Encoding.UTF8);
私が直面しているのは、(さまざまな理由で) XML ブログの生成にかなりの時間がかかる可能性があるということです。
XmlObject.WriteXml() メソッド内には、呼び出されたときに XML の断片を出力する他の小さなメソッドが多数呼び出されているため、すぐに XML 文字列の作成を開始します。完了するまでに時間がかかります。これらの各メソッドは StringBuilder を引数として受け入れるため、作成した後、各小さなメソッド内で sb.Append() を使用して最終的な XML BLOB を構築することで、それをあらゆる場所に渡すことができます。
わかりました。私がやりたいことは、文字列が構築され始めたらすぐにクライアントに何かを返し始めることです。Web フォームでは、すべての StringBuilder パラメータを HttpResponse に置き換え、次のような方法で StringBuilder.Append() の代わりに HttpResponse.Write() を使用します。
this.Response.BufferOutput = false;
XmlObject.WriteXml(Response);
次に、XML の小さな断片が応答に書き込まれるたびに、テキストがクライアントに送信されます。
私が抱えている問題は、ActionResult に return ステートメントが必要なことです。MVC ルートと ActionResult を使用して同様の方法で処理する方法がわかりません。おそらく、ActionResult 以外のものを使用する必要がありますか?
みんなありがとう!