对于呈现验证码图像的ASHX处理程序,我遇到了一个非常棘手的问题。让它真正发挥作用的是它在两个月前工作正常,当我今天再次回到它时它已停止工作。
我所拥有的是一个经常出现在验证码中的页面。这是挑战示例的标记:
<img class="challengedtl" src="Challenge.ashx?tkn=0057ea27-4d35-4850-9c6f-7a6fdc9818e2"/>
GUID引用SQL表中的记录,该记录包含验证码的实际内容以及验证码质询的状态,即是否已经处理过,如果是,用户也能正确处理等等。
在找到此标记的页面上,图像显示为损坏的jpeg。当我在ASHX ProcessRequest()方法中删除断点时,我可以看到永远不会调用ASHX。
当我从源属性中取出URL并直接从我的浏览器中的地址栏运行它时,我在ProcessRequest中点击了我的断点,并且捕获图像被渲染得很好。
我不相信我的ASHX代码是问题所在,因为当我直接调用它时它会起作用。问题似乎与ASHX没有被主页调用的原因有关。鉴于这在二月工作,我无法解释发生了什么。
我知道从那以后我的机器发生了什么事。我怀疑是Windows Update或Service Pack。原因是我的验证码处理包括跟踪呼叫者的IP地址。回到这个工作时,我的本地主机被注册为127.0.0.1(IPv4),但现在它被注册为:: 1(IPv6)。可能是红鲱鱼。
是否有人知道可能导致此问题的原因,或者您对如何解决此问题有任何建议?
答案 0 :(得分:2)
处理程序与包含您在上面发布的html的页面位于同一文件夹中吗?
答案 1 :(得分:2)
以下是两个关键部分:
当我在ASHX ProcessRequest()方法中删除断点时,我可以看到永远不会调用ASHX。
和
SRC =&#34; Challenge.ashx TKN = 0057ea27-4d35-4850-9c6f-7a6fdc9818e2&#34;
把它们放在一起,我们可以推测你的src属性中的路径是错误的。
它只是一个图片标记。如果html加载它将发送该资源的请求。由于您的断点没有被击中,它只能意味着您要么在某个允许断点的位置进行测试,要么就是将请求发送到错误的位置。
可能就像将请求发送到站点的生产版本一样简单,使用错误的架构(即:https vs http),或者在某处丢失文件夹或端口号。浏览器应该能够为您提供资源的完整路径 - 确保它符合您的预期。