C# 是否可以同时显示处理程序中的多个图像?

C# 是否可以同时显示处理程序中的多个图像?,c#,asp.net,image,handler,C#,Asp.net,Image,Handler,标题上说,我有一个通用处理程序。ashx和一个我只需要使用一个处理程序同时显示一个图像。谢谢你! 我正在我的项目中使用asp.net和c。 我需要显示的所有图像都是动态生成的。 我有一个Web用户控件,它使用这个处理程序来显示在asp图像控件上创建的动态位图图像。 但是,当我同时使用其中两个网络控件时,我遇到了一个问题,因为两个网络控件都显示相同的图像 ashx这些效果并不重要,它只是在用户选择dropdownlist上的选项时更改图像,这不是真正的问题 public void ProcessR

标题上说,我有一个通用处理程序。ashx和一个我只需要使用一个处理程序同时显示一个图像。谢谢你! 我正在我的项目中使用asp.net和c。 我需要显示的所有图像都是动态生成的。 我有一个Web用户控件,它使用这个处理程序来显示在asp图像控件上创建的动态位图图像。 但是,当我同时使用其中两个网络控件时,我遇到了一个问题,因为两个网络控件都显示相同的图像

ashx这些效果并不重要,它只是在用户选择dropdownlist上的选项时更改图像,这不是真正的问题

public void ProcessRequest(HttpContext context)
{
    string Effect = context.Request.QueryString["Effect"];
    if (Effect == "Normal")
    {
        Bitmap bmp = PanelStepTwo.image;
        context.Response.ContentType = "image/png";
        bmp.Save(context.Response.OutputStream, ImageFormat.Png);
    }
    else if (Effect == "PB")
    {
        Bitmap bmp = PanelStepTwo.imagePB;
        context.Response.ContentType = "image/png";
        bmp.Save(context.Response.OutputStream, ImageFormat.Png);
    }
    else if (Effect == "Sepia")
    {
        Bitmap bmp = PanelStepTwo.imageSepia;
        context.Response.ContentType = "image/png";
        bmp.Save(context.Response.OutputStream, ImageFormat.Png);
    }
}
下面是处理程序的调用方式。I是索引,因为它是在循环中调用的 Usuario.Imagens[i]返回URL,例如,如果“i”为0,则Usuario.Imagens[0]返回:@


将IsReusable属性设置为true以处理多个图像。在我上次查看时,没有关于此的MSDN文档。但这就是我用来显示的,比如说,产品图片列表。

澄清你所说的处理程序是什么意思。处理程序可以是一个简单的对象,它可以返回一个图像数组。然后,你的站点将以你想要的任何坐标显示这两个图像。啊,好吧,对不起,我错过了,我所说的处理程序是指一个通用处理程序,在我的例子中,它被称为ImageHandler.ashx。编辑了我的问题,很抱歉,但是发生的是,当我第二次请求处理程序时,第一个图像变成了。你如何调用处理程序?听起来处理程序的响应只是被缓存了。您可以在context.Response中禁用缓存,或者让从处理程序加载图像的UserControl将随机查询字符串附加到url,例如,unix epoc中的今天的秒数日期作为缓存buster。添加了context.Response.Clear;context.Response.Cache.SetCacheabilityHttpCacheability.Public;context.Response.Cache.SetExpiresDateTime.MinValue;到我的处理程序代码的顶端,它就不起作用了。Dennis Rongo,我更新了我的问题,向您展示了我如何调用handler.public bool可重用{get{return true;}}}还没有。。。结果是第二张图像和第一张图像是相同的。第一个应该不同。你如何在前端显示它们?是的!我在一个asp图像控件上显示它,处理程序就像一种从位图到asp img控件的转换器。处理程序的唯一功能是在img控件上显示位图。如果你愿意,我可以给你发送代码,这样对你来说会更容易,但我认为你在设置宽度和高度的地方得到了代码,注释掉://Effect=Normal;是否有任何方法可以显示位图而不使用千个处理程序。。。?
imgID = i;
var request = WebRequest.Create(Usuario.Imagens[i]);
using (var response = request.GetResponse())
using (var stream = response.GetResponseStream())
{
    image = new Bitmap(stream);
    var ratioX = (double)120 / image.Width;
    var ratioY = (double)120 / image.Height;
    var ratio = Math.Min(ratioX, ratioY);
    var newWidth = (int)(image.Width * ratio);
    var newHeight = (int)(image.Height * ratio);
    proporcao = image.Width / newWidth;
    img.Width = newWidth;
    img.Height = newHeight;
    Effect = "Normal";
    img.ImageUrl = "ImageHandler.ashx?imgID=" + imgID + "&Effect=" + Effect.ToString();
}