2013-06-23 43 views
1

我遇到了一个非常恼人的,与加载图片奇怪的问题,使用自定义处理程序(我们需要掩盖图片运行时)。ASP.NET图像不加载,使用imageHandler

网站,在那里你可以检查出来:http://utazovilag.hu/Test/Stack/Main.aspx

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

错误:上述应该很好,但奇怪的是,图片本身有时根本就不加载。 (如果你在上面的链接上查看网站,你可以看到它 - 应该有六张图片,在一个蓝色的边框内)。当我刷新页面时,图片显示并消失,没有任何(对我来说)逻辑模式。

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

  • 如果它得到任何URL或不imageHandler本身会给后面的exatly相同的图片各 的时候,不管。

  • 问题是与ImageBoxes(我认为)。当我给“普通” URL(一个不带任何参数,即使在处理程序甚至不检查 如果有任何参数)

  • 当我添加的URL imageBoxes(这 之一:http://utazovilag.hu/Test/GetTestImage.ashx)这将给 完美的图像回来,每个图像盒将加载没有任何 错误。

  • 当我添加URL以相同的参数,它的工作一样,因为它应该 (如:http://utazovilag.hu/Test/GetTestImage.ashx?OID=0&PID=0&SID=0) 它的作品,因为它应该。

(现在,)中的错误当我添加一个网址使用不同的参数,它使图片随机弹出,每次刷新之间dissapear(这是你我可以给你上面的链接看)像这样: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时,它看起来应该如此。仅当有更多图片框和不同的网址时才会显示加载问题。

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

任何想法将真的真的很感激。

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

EDIT1:我忘了提到它:它运行在我的本地机器上很好,当我尝试在服务器上运行这个错误出现。

Edit2:更新了处理程序代码,我展示了我在哪里放置日志查询。

+1

转到您提供的第一个链接,并使用Chrome开发人员工具“网络”标签筛选出仅图像,它会显示HTTP处理程序未处理的图像的HTTP错误。你能发布HTTP Handler的代码吗? –

+0

在附注中,您只需知道以下HTTP 404错误:logo.png,bgMain.jpg和clubcard_bg.png –

+0

是的,我知道,我只上传了最需要的想法,以便您了解我的问题,我不希望任何人加载大量不需要的数据。 –

回答

0

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

public bool IsReusable 
{ 
    get 
    { 
     return true; 
    } 
} 

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

+0

我按照你的建议将它改为True - 同样的问题。 –

+0

做一个完整的页面刷新? – IrishChieftain

+0

它刷新 - 一些图片加载,有些不是。有时候,所有六个负载,有时都不是他们(这是最罕见的,我只遇到过一次大约500次刷新,我已经做到了) –