ASP.NET(MVC)服务图像
|
我正在创建一个MVC 3应用程序(尽管适用于其他技术,例如ASP.NET Forms),并且只是想知道是否可行(性能明智)从代码提供图像而不是使用直接虚拟路径(如通常那样). 我的想法是,我改进了提供文件的常用方法: >应用安全检查 我知道怎么做,但我不知道我应该这样做. >什么是性能问题(如果有的话) 希望这一切都有意义! 谢谢, UPDATE 好的 – 让我们具体: 使用此类方法使用内存流为MVC 3中的所有图像提供服务会对性能产生什么影响?注意:图像URL将是GenericFetchImage / image1(为简单起见 – 我的所有图像都是jpegs). public FileStreamResult GenericFetchImage(string RouteValueRefToImage)
{
// Create a new memory stream object
MemoryStream ms = new MemoryStream();
// Go get image from file location
ms = GetImageAndPutIntoMemoryStream(RouteValueRefToImage);
// return the output as a file
return new FileStreamResult(ms,"image/jpeg");
}
我知道这种方法有效,因为我使用它来根据验证码图像的会话值动态生成图像.它非常整洁 – 但我想使用这种方法进行所有图像检索. 我想我在上面的例子中想知道这是否可行,或者是否需要更多的处理才能执行,如果是,那么多少?例如,如果访问者的数量乘以1000,那么服务器是否会在交付图像时处理负担. 谢谢! 解决方法之前( Can an ASP.Net MVC controller return an Image?)也提出了一个类似的问题,并且看起来直接用行动提供图像的性能影响非常小.正如所接受的答案所指出的那样,差异似乎是毫秒级(在该测试案例中,约为13%).您可以在本地重新运行测试,看看您的硬件有何不同.关于你是否应该使用它的问题的最佳答案是从这个answer到(另一个)类似的问题(强调我的):
要解决您提供的具体问题: >
您可以使用IIS 7 integrated pipeline执行此操作.文档中的相关位:
>
如果我正确地阅读文档,您可以在管道中尽早插入模块以重新编写传入的URL以直接指向静态资源,并让IIS从那里处理请求. (为了完整起见,还有关于将法律路线映射到法师的相关问题:How do I route images using ASP.Net MVC routing?)
还有一些非常强大的URL rewrite features,它带有或多或少的开箱即用的IIS.
看起来0700已经可用于IIS了.不确定这是否会落在代码服务图像之下,但我猜它可能.
如果你正在执行业务逻辑来生成所述资源(如chart)或者你提到的验证码图像那么是的,你基本上别无选择,只能这样做. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – BC30560:’default_aspx’在命名空间’ASP’中
- asp.net – 什么是使用jQuery的一些利弊?
- .net – UpdatePanel中的FileUpload控件,不刷新整个页面?
- ASP.NET Webforms中的异常处理
- 为什么我的asp.net应用程序抛出ThreadAbortException?
- controls – mvc显示模板中当前项的索引
- asp.net-mvc – 使用Orchard CMS构建站点
- asp.net – 菜单控件生成的js导致Web窗体中的Sys未定义的异
- ASP.NET 5未在开发模式下运行
- asp.net-web-api – 在Visual Studio中启动WebAPI项目的最简
- asp.net-mvc – 我应该把我的控制器业务逻辑放在
- asp.net repeater手写分页实例代码
- 如何获取asp.net Windows身份验证中的用户详细信
- asp.net – 经典ASP出站TLS 1.2
- asp.net-mvc – 使用ASP.NET MVC /实体框架对POC
- asp.net-web-api – WebAPI中的长时间运行任务
- asp.net-mvc-5 – MVC 5 – 向用户添加声明
- asp.net-mvc – ASP.NET MVC:处理取消按钮的正确
- 标签 – 如何使用像asp这样的Razor:Literal?
- asp.net-mvc – MVC5:@ Html.TextBoxFor(或Edit
