asp.net-mvc – C#MVC对浏览器的即时响应?
再次,问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写入Reponse时,文本将被发送到客户端. 我遇到的问题是ActionResult必须有一个return语句.我不知道如何使用MVC路线和ActionResult在类似的时尚中对待.也许我需要使用ActionResult以外的东西? 谢谢大家! 解决方法
如果它不需要是MVC操作的结果,并且您不想破坏可测试性/封装,那么您可以按照我们一直这样做的方式执行它 – 使用直接流入响应的自定义IHttpHandler.
UPDATE 样本可能没有意义 – 你的问题中有这个概念.只有扭曲才能跳过StringBuilder并使用XmlTextWriter集流式传输到Response.OutputStream以跳过中间人. 也就是说,现在我正在阅读你正在做的事情,我个人会采取“构建离线和合理缓存”的角度,而不是担心流式传输.它可能更容易处理罐头而不是生活. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET站点缓慢,直到回收
- asp.net – 如何使用kentico CMS获取GoogleNewsSitemap中的
- 密码保护IIS 7.5中的ASP.NET Web应用程序
- 具有EntityDataSource的一个ASP.NET GridView中的两个相关数
- asp.net-mvc-3 – 如何将现有文件夹与其所有子文件夹和内容
- ASP.NET Web API返回可查询的DTO?
- asp.net – 评论未使用的代码会不会给我的页面带来任何方式
- ASP.NET MVC 3 – Ajax.BeginForm vs jQuery Form Plugin
- asp.net-mvc – MVC单元测试控制器的优点
- asp.net-mvc – 确保对控制器中创建的对象进行IDisposable调
- asp.net-core-1.0 – ASP.NET Core 1.0中的packa
- asp.net-mvc – 使用Ajax在ASP.NET MVC的Kendo U
- asp.net – ListView与DataPager不工作
- asp.net – Response.Redirect和线程被中止错误?
- asp.net-core – 如何在启动时将数据放入MemoryC
- asp.net – 你能使用基于属性的WebApi 2与WebFor
- asp.net – IIS7.5中的无扩展URL
- 如何让ASP.NET MVC为EF中的外键生成字段
- asp.net – oauth令牌共享多个应用程序
- asp.net-mvc – ASP.NET MVC2和MemberShipProvid