ASHX渲染为破碎的图像

本文关键字:图像 破碎 ASHX | 更新日期: 2023-09-27 17:49:36

我遇到了一个非常令人烦恼的问题,即呈现验证码图像的ASHX处理程序。使它真正令人烦恼的是,它两个月前还能正常工作,当我今天再去看它的时候,它已经停止工作了。

我得到的是一个页面,抛出验证码每隔一段时间。这是来自一个挑战示例的标记:

<img class="challengedtl" src="Challenge.ashx?tkn=0057ea27-4d35-4850-9c6f-7a6fdc9818e2"/>

GUID引用SQL表中的记录,该记录包含captcha的实际内容以及captcha挑战的状态,即它是否被处理,如果是,用户是否正确等。

在找到此标记的页面上,图像显示为破碎的jpeg。当我在ASHX ProcessRequest()方法中删除一个断点时,我可以看到ASHX永远不会被调用。

当我从source属性中取出URL并直接从浏览器的地址栏中运行它时,我在ProcessRequest中击中了断点,捕获图像呈现得很好。

我不相信我的ASHX代码是问题所在,因为当我直接调用它时它可以工作。问题似乎是为什么主页面不调用ASHX。考虑到这在2月份还在工作,我无法解释发生了什么。

我知道从那以后我的机器发生了一些事情。我怀疑是Windows更新或某个服务包。这样做的原因是我的验证码处理包括跟踪调用者的IP地址。当这是工作时,我的本地主机被注册为127.0.0.1 (IPv4),但现在它被注册为::1 (IPv6)。可能是转移注意力。

有谁知道是什么原因造成的,或者你有什么建议来解决这个问题吗?

ASHX渲染为破碎的图像

处理程序是否与上面发布的包含html的页面在同一文件夹中?

以下是两个关键部分:

当我在ASHX ProcessRequest()方法中删除一个断点时,我可以看到ASHX永远不会被调用。

src = " Challenge.ashx吗?tkn = 0057 ea27 - 4 d35 - 4850 - 9 - c6f 7 - a6fdc9818e2"

把这些放在一起,我们可以推测src属性中的路径是错误的。

它只是一个图像标签。如果html加载了,那么发送对该资源的请求。由于没有命中断点,这只能意味着您没有在允许断点的地方进行测试,或者将请求发送到错误的位置。

它可以像发送请求到站点的生产版本一样简单,使用错误的模式(即:https vs http),或者在某个地方丢失文件夹或端口号。浏览器应该能够为您提供资源的整个路径——请确保这与您所期望的匹配。