1

我在使用自定义处理程序(我们需要屏蔽图片运行时)加载图片时遇到了一个非常烦人且奇怪的问题。

该网站,您可以在其中查看:http ://utazovilag.hu/Test/Stack/Main.aspx

基础知识:如上所述,我使用自定义图像处理程序在运行时加载和修改图像。这个网站提供不同的旅行,每一种都经常改变(主要是改变价格)。每家酒店都有自己的一组图片,我们在上面放了一个“广告”栏(一个半透明的黑色矩形,带有一些文字)。这个处理程序加载图像(一些来自本地服务器,一些来自另一个 URL 源),并在其上绘制所需的文本和图片,然后在响应流中返回图片本身。

错误:上面应该可以正常工作,但奇怪的是,图片本身有时根本无法加载。(如果您查看上述链接上的网站,您可以自己查看 - 应该有六张图片,在粗蓝色边框内)。当我刷新页面时,图片出现和消失,没有任何(对我而言)逻辑模式。

我尽可能地缩小了问题的范围。

  • imageHandler 本身每次都会返回完全相同的图片,无论它是否获得任何 URL。

  • 问题出在 ImageBoxes 上(我认为)。当我给出“普通”网址时(一个没有任何参数的网址,即使处理程序甚至不检查是否有任何参数)

  • 当我添加 imageBoxes 的 URL(这个:http ://utazovilag.hu/Test/GetTestImage.ashx )时,这将返回完美的图像,并且每个图像框都将加载而不会出现任何错误。

  • 当我添加具有 SAME 参数的 URL 时,它的工作就像它应该的那样(如:http://utazovilag.hu/Test/GetTestImage.ashx?OID=0&PID=0&SID=0)它应该正常工作。

(现在,错误)当我添加一个具有不同参数的 URL 时,它会使图片在每次刷新之间随机弹出并消失(这你可以在我上面给你的链接上看到)像这样:http://utazovilag .hu/Test/GetTestImage.ashx?OID=0&PID=0&SID=0而这个:http ://utazovilag.hu/Test/GetTestImage.ashx?OID=1&PID=0&SID=0

但是当我点击“刷新图像”按钮时,图像就会出现。当我尝试直接访问 GetTestImage.ashx 时,它会出现。加载问题仅在有更多图片框时出现,具有不同的 URL。

我只是从想法中跑出来,无法想象为什么会发生这种情况。我尝试创建最基本的 imageHandler(它只是加载图像,创建字节数组,然后将其推送到流向用户的流中)。我尝试了不同的浏览器(Firefox、IE、Chrome)——它们都给出了相同的错误(或者,没有错误,只是图片没有显示)。

任何想法都会非常感激。

编辑:这是我的 imageHandler:http ://pastebin.com/FjjUmNzW

Edit1:我忘了提及它:它在我的本地机器上运行良好,当我尝试在服务器上运行它时出现此错误。

Edit2:也更新了处理程序代码,我显示了我放置日志询问的位置。

4

1 回答 1

0

将 IsReusable 属性设置为 true 以处理多个图像。我上次查看时没有 MSDN 文档。但这就是我用来显示产品图像列表的东西。

public bool IsReusable
{
    get
    {
        return true;
    }
}

显然,这将处理程序保留在内存中并能够处理多个请求。当设置为 false 时,它​​必须为每个传入请求创建一个新的处理程序实例。

于 2013-06-23T16:37:28.473 回答