asp.net-mvc-2 – 在MVC 2中使用自定义TextWriter时,“BinaryWri
发布时间:2020-12-15 23:42:04 所属栏目:asp.Net 来源:网络整理
导读:我有一个使用响应BinaryWrite方法渲染流的视图.这一切都在ASP.NET 4使用Beta 2工作正常,但在RC版本中抛出此异常: “HttpException”,“OutputStream is not available when a custom TextWriter is used.” %@ Page Title="" Language="C#" Inherits="Syste
我有一个使用响应BinaryWrite方法渲染流的视图.这一切都在ASP.NET 4使用Beta 2工作正常,但在RC版本中抛出此异常:
<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage" %> <%@ Import Namespace="System.IO" %> <script runat="server"> protected void Page_Load(object sender,EventArgs e) { if (ViewData["Error"] == null) { Response.Buffer = true; Response.Clear(); Response.ContentType = ViewData["DocType"] as string; Response.AddHeader("content-disposition",ViewData["Disposition"] as string); Response.CacheControl = "No-cache"; MemoryStream stream = ViewData["DocAsStream"] as MemoryStream; Response.BinaryWrite(stream.ToArray()); Response.Flush(); Response.Close(); } } </script> </script> 视图是从客户端重定向生成的(jquery替换前一页中的位置调用,使用Url.Action帮助程序渲染链接当然).这一切都在一个iframe中. 任何人都有一个想法为什么会发生这种情况? 解决方法
当ViewPage开始执行时,它会假定有关请求的其余部分的某些内容.绊倒你的特定事情是,ViewPage假定请求的其余部分将是一个正常的HTML或一些其他文本响应,所以它将自己的作者的响应的TextWriter切换.
在您的情况下,您应该创建一个新的ActionResult派生类,其ExecuteResult方法将逻辑封装在Page_Load方法中.您的操作方法应返回您的自定义类的实例,并且调用者将在适当的时候运行ExecuteResult方法.这完全绕过视图引擎,这样可以防止您正在运行的错误,并提供轻微的性能提升. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何在Substitution控件中使用ASP.Net服务器控件?
- 如何将我的模型数据(列表)映射到另一个viewmodel数据(列表)
- 帮助ASP.NET中的Elmah配置
- asp.net core在linux上的部署调试
- asp.net-mvc-4 – Web API 2返回OK响应,但在后台继续处理
- asp.net – 如何在Web应用程序中检测手机
- ASP.NET——验证控件
- asp.net-mvc-3 – 如何在MVC3中为iframe的src属性提供html文
- .net – 如何在MVC 5中设置本地授权认证?
- asp.net-mvc在post action中获取字典或如何将FormCollectio
推荐文章
站长推荐
热点阅读