通过一些方法已经生成了图片验证码,现在要把图片验证码输入到客户端了,代码如下:public void OutPutValidateImage(Image image)
{
        MemoryStream ms = new MemoryStream();
        image.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
        System.Web.HttpResponse response = new HttpResponse(new StringWriter());
        response.Clear();
        response.ContentType = "image/Gif";
        response.BinaryWrite(ms.ToArray());
}问题来了:
当使用自定义 TextWriter 时,OutputStream 不可用。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Web.HttpException: 当使用自定义 TextWriter 时,OutputStream 不可用。源错误: 
行 104:        res.Clear();
行 105:        res.ContentType = "image/Gif";
行 106:        res.BinaryWrite(ms.ToArray());//这句为红色
行 107:    }
行 108:}
如何如何改正???
另外,
把验证字符串放到Session["ranTxt"]里面,再拿用户输入的验证码和Session["ranTxt"]进行比较,这样好吗?

解决方案 »

  1.   

    参考:
    http://www.cnblogs.com/insus/articles/1425377.html
      

  2.   

    这个方法是在页面上的吗,如果是,直接写成这样就行了
    public void OutPutValidateImage(Image image)
    {
            MemoryStream ms = new MemoryStream();
            image.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
            Response.Clear();
            Response.ContentType = "image/Gif";
            Response.BinaryWrite(ms.ToArray());
    }
      

  3.   

    如果不是在页面里面,写成这样
    public void OutPutValidateImage(Image image, HttpResponse response) 

            MemoryStream ms = new MemoryStream(); 
            image.Save(ms,System.Drawing.Imaging.ImageFormat.Gif); 
            response.Clear(); 
            response.ContentType = "image/Gif"; 
            response.BinaryWrite(ms.ToArray()); 

    在页面调用的地方
    OutPutValidateImage(image,Response)总之,应当使用页面相关的那个Response来写入数据
      

  4.   

    行啊,不过你少了命名空间,或者说少了接口的继承,写在你的类后IRequiresSessionState