一般处理程序获取Session方式

  今天写程序得时候遇到了一个问题:ajax在对ashx进行请求时如果按照 context.Request方式直接来获取值得话获取到得是空值,因此去网上搜了一下问题。现记录如下:

  ashx获取session值:

  1.首先添加引用:using System.Web.SessionState;

  2.我们得一般处理程序类要继承IRequiresSessionState接口

  3.对session值判断是否为null

  4.使用context.session["***"] 得到对应得session值

  下面写一个例子测试一下:

  html代码:

 1 <!DOCTYPE html>
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5     <title>测试界面</title>
 6     <script src="javascript/jquery-1.11.1.min.js"></script>
 7     <style>
 8     </style>
 9     <script>
10         //测试ajax向后台获取信息
11         function getinfo() {
12             $.ajax({
13                 url: "ashx/Handler1.ashx?action=get",
14                 dataType: "text",
15                 success: function (data) {
16                     alert(data);
17                 },
18             })
19         }
20         function setsession() {
21             $.ajax({
22                 url: "ashx/Handler1.ashx?action=set",
23             })
24         }
25         window.onload = function () {
26             setsession();
27             getinfo();
28         }
29     </script>
30 </head>
31 <body>
32     <div id="test">
33     </div>
34 </body>
35 </html>

  ashx代码:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.SessionState;
 6 namespace Biobase_BigData.ashx
 7 {
 8     /// <summary>
 9     /// Handler1 的摘要说明
10     /// </summary>
11     public class Handler1 : IHttpHandler, IRequiresSessionState
12     {
13
14         public void ProcessRequest(HttpContext context)
15         {
16             context.Response.ContentType = "text/plain";
17             string action = "";
18             if (context.Request.QueryString["action"] != null)
19             {
20                 action = context.Request.QueryString["action"].ToString();
21             }
22             switch (action)
23             {
24                 case "get":
25                     string session = "";
26                     if(context.Session["name"]!=null){
27                          session = context.Session["name"].ToString();
28                     }
29                     context.Response.Write(session);
30                     break;
31                 case "set":
32                     context.Session["name"] = "ceshi";
33                     break;
34             }
35         }
36
37         public bool IsReusable
38         {
39             get
40             {
41                 return false;
42             }
43         }
44     }
45 }

  运行结果显示:

  

时间: 2024-11-08 23:59:50

一般处理程序获取Session方式的相关文章

ASP.NET - 一般处理程序获取session值

1.要在一般处理程序中获取其他页面的session值,需要引用名空间: using System.Web.SessionState; 2.然后继承一个接口:IRequiresSessionState,如图: public class Handler : IHttpHandler, IRequiresSessionState { ······ ······ ······ } 3.然后就可以获得session值了: HttpContext context = new HttpContext(); s

【Struts2】Struts2获取session的三种方式

1.Map<String,Object> map =  ActionContext.getContext().getSession(); 2.HttpSession session = ServletActionContext.getRequest().getSession(); 3.让Action实现SessionAware接口,并实现public void setSession(Map<String, Object> session) {} 方法,Struts2会在实例化Act

一般处理程序设置Session cs 文件获取session

using System;using System.Web;using System.Web.SessionState; //第一步:导入此命名空间public class 类名 : IHttpHandler ,IRequiresSessionState //第二步:实现接口 到此就可以像平时一样用Session了{} 在自定义类库CS文件里使用System.Web.HttpContext.Current.Session获取Session时提示错误:未将对象引用设置到对象的实例.一般情况下通过这

SpringMVC - controller中获取session

平时使用springMVC 在方法中访问session中经常很自然地调用Servlet API. 用起来非常直观方便,一直没有多考虑什么. 比如这样: @RequestMapping(value = "/logout") public String logout(HttpSession session) { session.removeAttribute("user"); return "/login"; } 但毕竟这样对Servlet API产

SQLServer中使用扩展事件获取Session级别的等待信息以及SQLServer 2016中Session级别等待信息的增强

本文出处:http://www.cnblogs.com/wy123/p/6835939.html 什么是等待 简单说明一下什么是等待:当应用程序对SQL Server发起一个Session请求的时候,这个Session请求在数据库中执行的过程中会申请其所需要的资源,比如可能会申请内存资源,表上的锁资源,物理IO资源,网络资源等等,如果当前Session运行过程中需要申请的某些资源无法立即得到满足,就会产生等待.SQL Server会以不用的方式来展现这个等待信息,比活动Session的等待信息,

WebAPI中无法获取Session对象的解决办法

在MVC的WebApi中默认是没有开启Session会话支持的.需要在Global中重写Init方法来指定会话需要支持的类型 public override void Init() { PostAuthenticateRequest += MvcApplication_PostAuthenticateRequest; base.Init(); } void MvcApplication_PostAuthenticateRequest(object sender, EventArgs e) { H

[转载]淘宝API调用 申请 获取session key

http://www.cnblogs.com/zknu/archive/2013/06/14/3135527.html 在调用淘宝的API时,我们都会用到appkey,appsecret,appsession. 1.我们申请应用就会有appkey和appsecret了 2.正式环境下获取SessionKey 注意:web插件平台应用和web其它应用在正式环境下是同样的获取方法 1).WEB应用 回调URL:http://cnblogs.com 访问http://container.open.ta

用struts2获取session、request、parmeter的方法

package com.hanqi.action; import java.util.Map; import com.opensymphony.xwork2.ActionContext; public class TestAction { //解耦方式 //封装了WEB资源 //使用ActionContext @SuppressWarnings("unchecked") public String testweb() { //访问web资源 System.out.println(&qu

如何解决设置Session保存在StateServer后引起WebService/WebMethod无法异步获取Session

项目中有一个文件上传功能,需要显示文件上传进度.于是使用PageMethods 调用WebService/WebMethod . 在demo中测试一切正常.但是转移到项目中之后无法异步刷新文件上传进度. 调试后发现原因是异步刷新时,获取的session信息不是文件上传页面更新的最新信息. 又发现 web.config 中 有如下设置 <sessionState mode="StateServer" stateConnectionString="tcpip=localho