.ashx文件 判断Session 为什么总是NULL?

goopoolzl 2010-11-03 03:44:51
.ashx文件 判断Session 为什么总是NULL?
public class LoginInAndOut : IHttpHandler, IRequiresSessionState
我已经继承了IRequiresSessionState接口了,可以对session进行赋值了。而且测试session了没问题。

但是我在做页面加载判断的时候
//页面初始化判断是否session["us"]存在
public string CheckLoginInOrOut()
{
if (HttpContext.Current.Session["us"] != null)
return (HttpContext.Current.Session["us"] as ccerModel).UserName;
return "";
}

它总是返回的为"" ; 这是为什么啊? 我研究了好久了,在线等。。。。。。。。
...全文
622 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
hch126163 2010-11-04
  • 打赏
  • 举报
回复
public void ProcessRequest (HttpContext context)
{
if (context.Session["us"]!= null)
return (context.Session["us"] as ccerModel).UserName;
return "";
}
fabulous 2010-11-04
  • 打赏
  • 举报
回复
学习...没弄到过
SK_Aqi 2010-11-04
  • 打赏
  • 举报
回复
我这里访问就没有问题,楼主应该不会是没有引用吧?
using System.Web.SessionState;
wyman25 2010-11-04
  • 打赏
  • 举报
回复
不是ashx不能访问session,而是必须继承IHttpHandler 和IRequiresSessionState 两个接口。你这样写吧:

public class yourAshx : IHttpHandler, IRequiresSessionState
{

public void ProcessRequest(HttpContext context)
{

string session=context.Session["yourSession"].ToString();
}
phil999 2010-11-04
  • 打赏
  • 举报
回复
  public string CheckLoginInOrOut()
{

// 加这句试试,看看返回什么
HttpContext.Current.Session["us"] = new ccerModel{UserName="abc"};

if (HttpContext.Current.Session["us"] != null)
{
return (HttpContext.Current.Session["us"] as ccerModel).UserName;
}
return "";
}
phil999 2010-11-04
  • 打赏
  • 举报
回复
  public string CheckLoginInOrOut()
{
if (HttpContext.Current.Session["us"] != null)
{
return (HttpContext.Current.Session["us"] as ccerModel).UserName;
}
return "";
}


重新排下版,看清楚一些,很明显是 HttpContext.Current.Session["us"] 为 null
semisage 2010-11-04
  • 打赏
  • 举报
回复
学习学习!
woshimaikou 2010-11-03
  • 打赏
  • 举报
回复
在ashx类型页面调用session必须继承IRequiresSessionState
danjiewu 2010-11-03
  • 打赏
  • 举报
回复
调试一下看看HttpContext.Current.Session["us"]的值是什么不就明白了?
Craftsman 2010-11-03
  • 打赏
  • 举报
回复
8楼正解,实现IHttpHandler接口的同时必须继承IRequiresSessionState接口,才能拿到session
happy664618843 2010-11-03
  • 打赏
  • 举报
回复
  return (HttpContext.Current.Session["us"] as ccerModel).UserName;

这个有问题 你没有转换成实体类
Model model=HttpContext.Current.Session["us"] as ccerModel;
再取值
Arthur080319 2010-11-03
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 goopoolzl 的回复:]

那我不为NULL的时候 应该返回用户名啊。 可是还是返回为空了。 我断点过了。 它总是走return "",不走里面的那个~奇怪了!!
[/Quote]

没错,session["us"]不为null的时候是返回用户名,你次次都是走 return "" 说明啥啊??
说明你session["us"] == null 对不???
都为NULL了 你怎么拿session里面的值?
为NULL就说明你没读着SESSION!!!!!!!!!!!!
paul_C 2010-11-03
  • 打赏
  • 举报
回复
那可能就是1楼说的情况了,

检查其他跟UserName赋值有关的代码看看吧
goopoolzl 2010-11-03
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 paul_c 的回复:]
HttpContext.Current.Session["us"]

似乎不能这样取,从ProcessRequest 方法中提供的HttpContext 对象中取试试看 即context.Session["us"]
public void ProcessRequest (HttpContext context)
{
if (context.Session["us"]!= null)
……
[/Quote]
试过了 可以拿到session里面的值,就是判断是不是为NULL 有问题啊~~
paul_C 2010-11-03
  • 打赏
  • 举报
回复
HttpContext.Current.Session["us"]

似乎不能这样取,从ProcessRequest 方法中提供的HttpContext 对象中取试试看 即context.Session["us"]
public void ProcessRequest (HttpContext context)
{
if (context.Session["us"]!= null)
return (context.Session["us"] as ccerModel).UserName;
return "";
}

试试看,行不行。
goopoolzl 2010-11-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 arthur080319 的回复:]
Session["us"] == null
判断为null就是说不存在好吗
[/Quote]

那我不为NULL的时候 应该返回用户名啊。 可是还是返回为空了。 我断点过了。 它总是走return "",不走里面的那个~奇怪了!!
Arthur080319 2010-11-03
  • 打赏
  • 举报
回复
Session["us"] == null
判断为null就是说不存在好吗
goopoolzl 2010-11-03
  • 打赏
  • 举报
回复

public class LoginInAndOut : IHttpHandler, IRequiresSessionState{
public void ProcessRequest (HttpContext context) {
string OutString = string.Empty;

switch (context.Request["type"])
{
case "LoginIn":
string txtName = context.Request["txtName"];
string txtPass = context.Request["txtPass"];
OutString = GetLoginOut(txtName, txtPass); break;
case "LoginOut": OutString = GetLoginIn(); break;
case "OnLoad": OutString = CheckLoginInOrOut(); break;
case "RDZT": OutString = TiaoZhuanZT(); break;
}

context.Response.ContentType = "text/plain";
context.Response.Write(OutString);
}



//页面初始化判断是否session["us"]存在
public string CheckLoginInOrOut()
{
if (HttpContext.Current.Session["us"] != null)
return (HttpContext.Current.Session["us"] as ccerModel).UserName;
return "";
}

}
调用了CheckLoginInOrOut方法 ,总是为空! 它判断为null 但是Session是存在的~~
Arthur080319 2010-11-03
  • 打赏
  • 举报
回复
.ashx文件 读不到SESSION!!!
你可以改用COOKIE
hua_lanyu 2010-11-03
  • 打赏
  • 举报
回复
你没有给Session["us"] 赋值??
加载更多回复(4)

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧