asp.net-mvc – 如何在ASP.NET MVC RC1中返回304状态与FileResult
发布时间:2020-05-25 06:41:41 所属栏目:asp.Net 来源:互联网
导读:你可能知道我们在RC1版本的ASP.NET MVC中有一个名为FileResult的新的ActionResult. 使用它,您的操作方法可以动态地将图像返回到浏览器.这样的事情 public ActionResult DisplayPhoto(int id){ Photo photo = GetPhotoFromDatabase(id); return File(photo.Con
|
你可能知道我们在RC1版本的ASP.NET MVC中有一个名为FileResult的新的ActionResult. 使用它,您的操作方法可以动态地将图像返回到浏览器.这样的事情 public ActionResult DisplayPhoto(int id)
{
Photo photo = GetPhotoFromDatabase(id);
return File(photo.Content,photo.ContentType);
}
在HTML代码中,我们可以使用这样的东西: <img src="http://mysite.com/controller/DisplayPhoto/657"> 由于图像是动态返回的,所以我们需要一种方法来缓存返回的流,以便我们不需要再次从数据库中读取图像.我想我们可以这样做,我不知道: Response.StatusCode = 304; 这告诉浏览器您已经在缓存中拥有图像.将StatusCode设置为304后,我只是不知道在我的操作方法中返回的内容.应该返回null还是什么? 解决方法这个博客回答了我的问题; http://weblogs.asp.net/jeff/archive/2009/07/01/304-your-images-from-a-database.aspx基本上,您需要读取请求头,比较最后修改的日期并返回304,否则返回图像(具有200状态),并适当地设置缓存头. 博客的代码段: public ActionResult Image(int id)
{
var image = _imageRepository.Get(id);
if (image == null)
throw new HttpException(404,"Image not found");
if (!String.IsNullOrEmpty(Request.Headers["If-Modified-Since"]))
{
CultureInfo provider = CultureInfo.InvariantCulture;
var lastMod = DateTime.ParseExact(Request.Headers["If-Modified-Since"],"r",provider).ToLocalTime();
if (lastMod == image.TimeStamp.AddMilliseconds(-image.TimeStamp.Millisecond))
{
Response.StatusCode = 304;
Response.StatusDescription = "Not Modified";
return Content(String.Empty);
}
}
var stream = new MemoryStream(image.GetImage());
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetLastModified(image.TimeStamp);
return File(stream,image.MimeType);
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-4 – 在控制器的新窗口中打开mvc视图
- asp.net – Javascript之前asp:ButtonField点击
- asp.net-mvc – 如何创建特定于区域,控制器和操作的自定义A
- Asp.NET控制文件上传的大小方法(超简单)
- asp.net – 如何在web.sitemap中实现本地化
- 如何在ASP.Net项目中包含jQuery?
- asp.net-mvc – 如何在ASP.NET MVC中阻止JSON序列化?
- asp.net-mvc – 不需要必需属性的bool属性
- asp.net-mvc – ASP.NET身份和声明
- asp.net-core – ASP .NET Core 1.0 RTM本地化无法正常工作
推荐文章
站长推荐
- asp.net – 使用回发解析.Net页面
- asp.net – Microsoft重写模块 – 强制www url或
- asp.net-mvc – DotNetOpenAuth在ASP.NET MVC中的
- asp.net-mvc – 基于MVC的API – 如何实现OAuth?
- asp.net – 会话存储在客户端或服务器端
- asp.net-mvc-5 – 如何在没有数据库的情况下使用
- asp.net – 如何序列化LINQ-to-SQL惰性列表
- asp.net – 如何使用会员资格提供者与EF代码优先
- asp.net-mvc – 如何在ASP.NET MVC中使用编译的全
- asp.net-mvc – DataAnnotation验证和自定义Mode
热点阅读
