解决ASP.NET MVC的FileStreamResult无法正确返回数据问题
2011-01-22 17:37
801 查看
使用ASP.NET MVC 3 RC2 的时候发现,这样的代码在一些情况下总是无法返回正确的结果(理论上来说前几个版本也存在这种可能):
MemoryStream ms = xxxx;//图片类型
return File(ms, "image/jpeg");
跟踪了一下File的结果,确实已经有数据,但是无法在页面上返回(此时File重写方法返回的是FileSreamResult)。
但如果把这个Stream先保存为文件,然后直接返回文件名是可以的:
return File(filename, "image/jpeg");
此时File重写方法返回的是FileContentResult。
经过比较发现,这两个方法其实都可以获取到正确的FileSreamResult或者FileContentResult,只不过MVC无法正确渲染FileSreamResult,于是walkaround一下:
MemoryStream ms = xxxx;//图片类型
return File(ms.ToArray(), "image/jpeg");
这样就把MemoryStream转成byte[]类型,返回类型为FileContentResult,可以正常输出。
MemoryStream ms = xxxx;//图片类型
return File(ms, "image/jpeg");
跟踪了一下File的结果,确实已经有数据,但是无法在页面上返回(此时File重写方法返回的是FileSreamResult)。
但如果把这个Stream先保存为文件,然后直接返回文件名是可以的:
return File(filename, "image/jpeg");
此时File重写方法返回的是FileContentResult。
经过比较发现,这两个方法其实都可以获取到正确的FileSreamResult或者FileContentResult,只不过MVC无法正确渲染FileSreamResult,于是walkaround一下:
MemoryStream ms = xxxx;//图片类型
return File(ms.ToArray(), "image/jpeg");
这样就把MemoryStream转成byte[]类型,返回类型为FileContentResult,可以正常输出。
相关文章推荐
- 用JS解决Asp.net Mvc返回JsonResult中DateTime类型数据格式的问题
- 解决Asp.net Mvc返回JsonResult中DateTime类型数据格式问题的方法
- 解决Asp.net Mvc返回JsonResult中DateTime类型数据格式的问题
- 解决Asp.net Mvc返回JsonResult中DateTime类型数据格式的问题
- 解决Asp.net Mvc返回JsonResult中DateTime类型数据格式的问题
- 解决Asp.net Mvc返回JsonResult中DateTime类型数据格式的问题
- 解决Asp.net Mvc返回JsonResult中DateTime类型数据格式问题的方法
- Asp.net Mvc返回JsonResult中DateTime类型数据格式的问题
- 在 Asp.net MVC 2 中解决页面提交数据并发问题
- 解决ASP.NET MVC(post数据)Json请求太大,无法反序列化
- ASP.NET MVC处理JsonResult返回时间DateTime问题
- WindowsServer2003R2、IIS6下非常让人郁闷的ASP.NET MVC在大用户量下Session会乱串的无法正确读取数据,导致系统无法正常使用
- 解决ASP.NET MVC(post数据)Json请求太大,无法反序列化(The JSON request was too large to be deserialized)
- Asp.net MVC 2 中解决页面提交数据并发问题
- 使用Newtonsoft.json 解决 Asp.Net MVC DateTime类型数据Json格式化问题
- asp.net mvc利用Json验证数据和导向页面,解决重复提交问题
- 奇怪的问题:在asp.net MVC的action方法中,如果有重定向语句,则返回json数据是无效的
- 解决asp.net MVC 的数据访问并发问题。(已有打开的与此 Command 相关联的 Dat)
- Asp.net MVC 2 中解决页面提交数据并发问题
- 在ASP.NET MVC中json的应用(即JsonResult)(asp.net mvc 后台返回json数据方式 )