希望在一般处理程序中通过 Session 保存验证码却无法显示图片?

using System.Drawing;
using System.Web;
using System.Web.SessionState;

/// <summary>
/// CaptchaHandler 的摘要说明
/// </summary>
public class CaptchaHandler : IHttpHandler, IRequiresSessionState
{

  public void ProcessRequest(HttpContext context)
  {

    // GDI+ 三步 1画布 2为画布创建画笔 3绘制所需素材

    var vCode = CaptchaHelper.CreateRandomCode(5);  //自己封装的扩展方法

    var buffer = CaptchaHelper.DrawImage(vCode, background: Color.White);  //自己封装的扩展方法
    context.Session["vCode"] = vCode;

    context.Response.ContentType = "image/gif";
    context.Response.BinaryWrite(buffer);
  }

  public bool IsReusable { get { return false; } }
}

【关键】Handler 要实现 IRequiresSessionState 接口(所在的命名空间 using System.Web.SessionState;)

时间: 2024-11-05 13:42:38

希望在一般处理程序中通过 Session 保存验证码却无法显示图片?的相关文章

ASP.NET中在一般处理程序中使用session的简单介绍

这篇文章介绍了ASP.NET中在一般处理程序中使用session,有需要的朋友可以参考一下 <%@ WebHandler Language="C#" Class="ChangePwd" %> using System; using System.Web; using System.Web.SessionState; public class ChangePwd : IHttpHandler, IReadOnlySessionState { public

c#中一般处理程序中使用session

在.aspx.cs页中读写Session都是Session["***"]就可以获取或者写入.但是在一般处理程序也就是ashx页面中,再这样写的话,就会为null, 解决办法是先要添加命名空间using System.Web.SessionState; 然后再继承接口 其中:System.Web.SessionState.IReadOnlySessionState为只读会话的接口 而:System.Web.SessionState.IRequiresSessionState 为可读可写会

asp.net中一般处理程序中添加session

asp.net中使用一般处理程序(.ashx)添加session,利用context.session["xxx"] = value的方式把值保存到session:运行的时候会出现该对象尚未引用. 解决办法:1,在一般处理程序的类后面添加IRequiresSessionState.例如public class xxx : IHttpHandler, IRequiresSessionState. 2,引入session所使用的类库,using System.Web.SessionState

一般处理程序中,获取session

注意了: 1.要在一般处理程序中获取其他页面的session值,需要引用名空间: using System.Web.SessionState; 2.然后继承一个接口:IRequiresSessionState,如图: 3.然后就可以获得session值了 string s =context.Session["Verifycode"].ToString();

MVC、控件、一般处理程序中的session and cookie

Mvc中: session: if (!string .IsNullOrEmpty(find)) //设置 Session["oip"] = "无锡"; ViewBag.oip =Session["oip"]; if (Session["oip"] == null) //获取 Session["oip"] = null; //设为null Session.Timeout = 1; //设置过期时间 <

一般处理程序中使用Session出现未将对象引用设置到对象的实例

遇到问题:未将对象引用设置到对象的实例 那就在你的一般处理程序中加入红色背景的代码吧 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data; using System.Web.SessionState; //引用命名空间 namespace gl.webweb.gl_web.ashx { //实现接口 public class login : I

linux系统中部署项目,验证码不能正常显示,而windows下面的tomcat下运行,验证码能正常显示,之解决办法

linux下验证码功能不能正常显示 步骤方法:1.修改${TOMCAT_HOME}/bin/catalina.sh (windows修改catalina.bat).2.查找到-Djava.io.tmpdir="$CATALINA_TMPDIR"这行,3.并在这一行下加入:-Djava.awt.headless=true \,一共需要在修改文件里面添加7次,4.修改好"保存"再重启tomcat后网页的验证码就可以正确显示了. 原文地址:https://www.cnbl

一般处理程序中使用session

首先引用:using System.Web.SessionState;  再在 IHttpHandler 后面加逗号加IReadOnlySessionState:IHttpHandler,IReadOnlySessionState context.Session["xxx"]就可以取到session的值

Laravel中使用Session存取验证码信息

1.将验证码存储到session中. $request->session()->put('validate_code',$validateCode->getCode());//存储信息 2.将session中的验证码取出来与用户输入的验证进行匹配验证. $request->session()->get('validate_code');//取出信息