问候!
我创建了一个APSX Web表单,它根据一些提供的参数返回一个远程图像.它可以像这样使用:
<img src="/ImageGetter.aspx?param1=abc¶m2=123" />
<%@ 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处理程序并使用自己的缓存方法.
原文地址:https://www.jb51.cc/csharp/91454.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。