加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 返回图像的ASPX – 输出缓存能力?

发布时间:2020-12-15 04:28:29 所属栏目:百科 来源:网络整理
导读:问候! 我创建了一个APSX Web表单,它根据一些提供的参数返回一个远程图像.它可以像这样使用: img src="/ImageGetter.aspx?param1=abcparam2=123" / ImageGetter.aspx的标记和代码看起来类似于: %@ OutputCache Duration="100000" VaryByParam="*" Location
问候!

我创建了一个APSX Web表单,它根据一些提供的参数返回一个远程图像.它可以像这样使用:

<img src="/ImageGetter.aspx?param1=abc&param2=123" />

ImageGetter.aspx的标记和代码看起来类似于:

<%@ OutputCache Duration="100000" VaryByParam="*" Location="ServerAndClient" %>
<%@ Page Language="C#" AutoEventWireup="false" EnableSessionState="False" CodeBehind="ImageGetter.aspx.cs" Inherits="ACME.Helpers.ImageGetter" %>

此代码在ImageGetter.aspx的Page_Load方法中调用:

byte[] data = null;
Dictionary<string,string> file_locations = GetImageLocations(param1,param2);
try
{
    data = new WebClient().DownloadData(file_locations["main"]);
}
catch (WebException wex)
{
    try
    {
        data = new WebClient().DownloadData(file_locations["backup"]);
    }
    catch (Exception e)
    {
        throw;
    }
}
Response.ContentType = "image/jpeg";
Response.OutputStream.Write(data,data.Length);
Response.End();

从我的测试来看,它似乎不是缓存.这可能与输出缓存有关,还是应该根据查询字符串参数编写自己的缓存来存储字节数组?

解决方法

尝试删除Response.End(),因为这将提前终止线程并阻止输出缓存发生.

见:http://bytes.com/groups/net-asp/323363-cache-varybyparam-doesnt-work

您可能希望考虑使用ASHX处理程序并使用自己的缓存方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读