我想要一个在ASP.NET中生成验证码图片的函数,在网上搜了很多,都用到了SESSION或COOKIE,除了SESSION和COOKIE难道没有其他方法了吗?
还有一些生成验证码的类,但是实在看不懂该如何使用,都只是写到containerPage.Response.WriteBinary()就完了,我知道这是输出HTTP流至客户端,但是我在页面上放一个IMAGE图片,这个图片该如何将生成的流显示出来呢?没有一篇文章说明使用方法的.
希望各位朋友可以帮忙解释一下,我需要不用SESSION和COOKIE的生成验证码的方法.
谢谢了.

解决方案 »

  1.   

    看看这个http://www.cnblogs.com/wmj/archive/2008/06/19/1225928.html
      

  2.   

    在项目中加一个.ashx文件。重写ProcessRequest()方法,在图片上加几个验证码,输出即可。
      

  3.   

    我需要不用SESSION和COOKIE的生成验证码的方法.
    ==
    那打算存放在那里?
      

  4.   

    要的就是直接生成,是函数也好,类也好.就是不能用SESSION或者COOKIE.
    除了SESSION和COOKIE应该还有其他方法吧?
    SESSION占资源,如果持续访问生成图片的页面的话会不会不断生成SESSION后果我也不知道...COOKIE的话不能保证客户端禁用.
      

  5.   


    这个 这个里面用的是ViewState
      

  6.   

    不断访问的情况下 只会不断改写一处session的值
    禁用cookie....客户端要是禁止显示图片的话 那还没法子验证了呢 抬杠 呵呵!~
      

  7.   

    session是一定要用的,主要是保存验证码信息。
      

  8.   

    一般人访问的时候确实只是修改一处SESSION的值.
    但是验证码是防范攻击者的,难保他不会耍什么手段让每次都产生一个SESSION
    至于COOKIE这个东西,上级领导是不建议使用的,我也是没有办法咯!所以才上来求助.
    刚找到了直接在页面Response.WriteBinarty出图片的方法来.直接写在ASPX页的某个位置上应该是可以实现的.
    谢谢楼上兄弟.
      

  9.   

    直接输出不到页面上...
    继续顶吧.
    用viewstate的话请问和直接生成验证码后赋给一个Label.Text有何区别呢?
    一样会保存到页面的_VIEWSTATE上啊.这样会安全吗?
      

  10.   

    以前曾经这样写过
    首先:创建验证码图片,把图片保存到一个目录
    在页面上放一个img src=‘该图片的路径’
    用session保存生成时的验证码
    也可以用cookie保存
    还可以用cache保存
    还可以用txt文本保存
    就看你自己怎么保存了
      

  11.   

    session
    cookies
    viewstate
    加密url参数仅能如此了.
      

  12.   

    你可以写一个一般处理程序 把它的response的type写成是图片的 然后读图片为流写到response的outputstream里面 最后直接在你需要显示验证图片的地方调用这个一般处理程序作为图片源
    产生图片(向图片写字符串)的地方和你调用验证的地方不是同一个页面 所以你没有办法用Label.Text传递值 viewstate可以进行传递
    不管怎样都得保存验证码以进行比较 本来也没有绝对的安全啊
      

  13.   

    难道就不能够"产生图片(向图片写字符串)的地方和你调用验证的地方同一个页面"????
    网上的方法我看过了,现在的要求写明了不可以用SESSION或者COOKIE!
    我要的就是将图片和验证码直接在页面输出,而非再搞一个Validate.aspx页面来做图片地址,因为这样子是必须用到cookie或者session的.
    我相信一定会有办法的!
      

  14.   

    验证码图像的生成与COOKIES或Session无关。
    Cookies和Session所起到的作用是保存随机生成的验证码字符串到待验证的页面进行后台验证。
    注意Cookies记得加密验证码。否则跟没设验证码没多大差别。
    Session相对方便些。不需要加密。但有时会比较容易丢失。