[ASP.NET] IHttpModule 验证每个 Page 的 Session 的问题:

bflovesnow 2005-06-24 10:26:51

使用 IHttpModule 来检测每个 Page 的 Session ,在为空后,即导向某个页面。

实现 IHttpModule 接口的类的伪代码如下:

public void Init(System.Web.HttpApplication context)
{
context.PreRequestHandlerExecute += new EventHandler(Application_BeginRequest);
}

private void Application_BeginRequest(Object source, EventArgs e)
{
HttpApplication Application = (HttpApplication)source;

//当前页面的路径
string uri = Application.Context.Request.Path.ToLower();

if(Application.Context.Session == null)
{
HttpResponse Response = Application.Context.Response;
Response.Write("重新登录吧!");
}

Application.Response.Write(uri);
}

现在的情况是:在 Session 正常时,每个 Page 都可以打印出这个 uri ,但在 Session 失效后,即没有进行上面的 if(Application.Context.Session == null) 的判断,而是直接显示的当前 Page 中 Session 失效的错误。

问题:怎么样才能进行 if(Application.Context.Session == null) 的判断??
...全文
192 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
bflovesnow 2005-06-30
  • 打赏
  • 举报
回复
思路有问题,不好意思。

判断 session 为 null 的情况,是在服务端,而这时再 response.write 后就是客户端的事了
所以始终还会报 session 为 null 的错误。

只要使用 Response.Redirect 就行了~~
liuqm 2005-06-29
  • 打赏
  • 举报
回复
hackate(兰花开香入梦境,独思佳人亦飘然!!) 的不错,

就是少了句 ---Response.End()---
ye_zi 2005-06-29
  • 打赏
  • 举报
回复
Response.End()
加上这个就可以
xzq686 2005-06-29
  • 打赏
  • 举报
回复
string uri = Application.Context.Request.Path.ToLower();

if(Application.Context.Session == null)
{
HttpResponse Response = Application.Context.Response;
Response.Write("重新登录吧!");
Response.End();//加上这句看是否能挺止响应.
}
else
{
Application.Response.Write(uri);
}
smbeng 2005-06-29
  • 打赏
  • 举报
回复
是不是要指定session的具体的如session["userName"]
bflovesnow 2005-06-29
  • 打赏
  • 举报
回复
UP!!!
bflovesnow 2005-06-27
  • 打赏
  • 举报
回复
我的思路本身就有问题吗??
renyu732 2005-06-27
  • 打赏
  • 举报
回复
接分.
bflovesnow 2005-06-27
  • 打赏
  • 举报
回复
请大家关注,谢谢 !
hackate 2005-06-24
  • 打赏
  • 举报
回复
string uri = Application.Context.Request.Path.ToLower();

if(Application.Context.Session == null)
{
HttpResponse Response = Application.Context.Response;
Response.Write("重新登录吧!");
}
else
{
Application.Response.Write(uri);
}

你这样加了else就是说如果session不为空则打印。。

而你刚才没有加else的结果是这样。session不为空他会打印没错。但是即使session为空。他一样会执行到Application.Response.Write(uri);这一句,所以就会出错。。恩
老戴12345654 2005-06-24
  • 打赏
  • 举报
回复
if(Application.Context.Session == null)
{
HttpResponse Response = Application.Context.Response;
Response.Write("重新登录吧!");
}
else
{
Application.Response.Write(uri);
}
bflovesnow 2005-06-24
  • 打赏
  • 举报
回复
up
bflovesnow 2005-06-24
  • 打赏
  • 举报
回复
2 楼上两位:这样还是报错。

怎么样才能在 IHttpModule 中控制如果 Session 为空时,停止页面的响应呢???

62,244

社区成员

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

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

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

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