再次,询问 MVC noob 问题。原谅我缺乏经验。
我有一种情况,我使用 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。
好的,所以我想做的是在字符串开始构建后立即开始向客户端返回一些东西。在 Webforms 中,我会用 HttpResponse 替换所有 StringBuilder 参数,并使用 HttpResponse.Write() 而不是 StringBuilder.Append(),其方式类似于:
this.Response.BufferOutput = false;
XmlObject.WriteXml(Response);
然后,随着每一小段 XML 被写入响应,文本将被发送到客户端。
我遇到的问题是 ActionResult 必须有一个 return 语句。我不知道如何使用 MVC 路由和 ActionResult 进行类似的处理。也许我需要使用 ActionResult 以外的东西?
谢谢大家!