我直接打开这个链接http://localhost:23011/Login/GetCheckCode.ashx?t=ce7052c1a25f4e1a99525d8c80957180
通过ashx 生成验证码,
image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); context.Response.ClearContent(); context.Response.ContentType = "image/jpeg"; context.Response.BinaryWrite(ms.ToArray());
这样输出。
但是执行两次,导致看到的是第一次执行的验证码,但是session中保存的是第二次的结果,校验通过不了,不知道为什么ProcessRequest执行两次,
你有没有一个表单提交?还有就是你的验证码生成为什么执行了2次,求贴一些代码看下,不是需要你怎么生成验证码
没有表单,我这个接口就是生成验证码图片。
其实正常使用验证码是前台中一个image标签,src指向接口地址,我为了测试,直接在浏览器中输入那个接口地址,调试的时候,ashx中总是执行两次,就出现了我描述的问题。如果点击image没问题,不会执行两次,这是怎么回事,知道吗
@摆脱菜鸟: 这是你初始化的时候请求一次,ajax再请求一次?我这样怎么猜的到
@稳稳的河: 没有ajax,<image src="http://localhost:23011/Login/GetCheckCode.ashx?t=ce7052c1a25f4e1a99525d8c80957180">
这样没问题,页面加载的时候会执行ashx,调用一次
但是http://localhost:23011/Login/GetCheckCode.ashx?t=ce7052c1a25f4e1a99525d8c80957180我不放到image标签中,在浏览器中直接请求,执行ashx就会执行两次
应该是请求的内容是文件的情况下,不能通过地址栏直接请求,会执行两次,而如果结果是
context.Response.ContentType = "text/plain";在浏览器中直接请求不会执行两次