未加载ASP.NET映像,正在使用imageHandler



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

网站,您可以在这里查看:http://utazovilag.hu/Test/Stack/Main.aspx

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

错误:以上应该可以很好地工作,但奇怪的是,图片本身有时根本无法加载。(如果你在上面的链接上查看网站,你可以自己看到——应该有六张照片,在涂了胭脂的蓝色边框内)。当我刷新页面时,图片会出现和消失,没有任何(对我来说)逻辑模式。

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

  • imageHandler本身将分别返回完全相同的图片时间,无论它是否获得任何URL。

  • 问题出在ImageBoxes上(我认为)。当我给出"平原"url(一个没有任何参数的,即使处理程序甚至不检查如果有任何参数)

  • 当我添加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),所有浏览器都会出现相同的错误(或者,没有错误,只是图片没有显示)。

任何想法都将不胜感激。

编辑:这是我的图像处理程序:http://pastebin.com/FjjUmNzW

第1版:我忘了提一下:它在我的本地机器上运行得很好,当我试图在服务器上运行它时,就会出现这个错误。

第2版:也更新了处理程序代码,我展示了我把日志放在哪里询问。

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

public bool IsReusable
{
    get
    {
        return true;
    }
}

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

最新更新