在bll层中的类如何获取session中的值

net_grope 2012-06-13 10:17:25
在这个类中为什么session总是为null,无论是否登录了

public class UserAuthorizationModule : IHttpModule
{
#region IHttpModule 成员
public void Dispose()
{
}
public void Init(HttpApplication application)
{
application.BeginRequest += (new EventHandler(this.Application_BeginRequest));
}
private void Application_BeginRequest(Object source, EventArgs e)
{
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;


string requestUrl = context.Request.Url.ToString();
//context.Response.Write("<script>alert("+requestUrl+")</script>");
string requestPage = requestUrl.Substring(requestUrl.LastIndexOf('/') + 1);
if (requestPage != "UserLogin.aspx")
{
if (requestPage == "CreatTable.aspx")
{
// if (context.Session == null || context.Session["username"].ToString().Trim() == "")
try
{
if (context.Session["username"].ToString() == "")
{
context.Response.Redirect("~/UI/RolesManager/UserLogin.aspx");
}
else
{
string userName = context.Session["username"].ToString();
string url = context.Request.Url.ToString();
// 如果用户没有被授权,请求被终止,并打印提示信息。
//if (!CanUseModule(userName, url))
//{
if (true)
{
// application.Response.BinaryWrite();
application.CompleteRequest();
//context.CompleteRequest();
context.Response.Write("<script>alert(\"对不起,您无权访问此模块\")</script>");
//重新定向到需要转到的页面
}
}
}
catch (NullReferenceException)
{
context.Response.Redirect("~/UI/RolesManager/UserLogin.aspx");
}
}



}
}
...全文
396 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
bjw1989 2012-06-15
  • 打赏
  • 举报
回复
注意Session创建的事件周期

http://www.cnblogs.com/clso/archive/2012/03/03/2378168.html
net_grope 2012-06-14
  • 打赏
  • 举报
回复
引用加过了,我的是web应用程序,没有app_code
代码小天王 2012-06-14
  • 打赏
  • 举报
回复
接口是规范 你必须实现接口 即使里面没有任何方法和属性 你也实现了这个接口
[Quote=引用 11 楼 的回复:]

那个接口是标记性接口,只要填上就行,不用实现的
[/Quote]
天下如山 2012-06-14
  • 打赏
  • 举报
回复
感觉直接放在App_Code就可以啦。毕竟需要用到Session吧。
例如俺的:

public class ValidateCookie:IHttpModule
{
public ValidateCookie()
{

}

#region IHttpModule 成员
public void Dispose()
{ }
public void Init(HttpApplication context)
{
context.AcquireRequestState += new EventHandler(context_AcquireRequestState);
}
public void context_AcquireRequestState(object sender, EventArgs e)
{
// 获取应用程序
HttpApplication application = (HttpApplication)sender;
// 检查用户是否已经登录
if (application.Context.Session == null)
return;
if (application.Context.Session["username"] == null)
{
// 获取Url
string requestUrl = application.Request.Url.ToString();
string requestPage = requestUrl.Substring(requestUrl.LastIndexOf('/') + 1);
// 如果请求的页面不是登录页面,刚重定向到登录页面。
if (requestPage.IndexOf("ShowImage.aspx")!=0)
{
if (requestPage != "Login.aspx")
application.Response.Redirect("~/Login.aspx");
}
}
}
#endregion
}
vrvwjm 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
public class UserAuthorizationModule : IHttpModule, IRequiresSessionState
[/Quote]+1
yyl8781697 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
public class UserAuthorizationModule : IHttpModule, IRequiresSessionState
[/Quote]
还在加一个引用

using System.Web.SessionState;
net_grope 2012-06-14
  • 打赏
  • 举报
回复
context.Session["username"] == null 这句判断session是否为空还是抛出空异常
net_grope 2012-06-14
  • 打赏
  • 举报
回复
那个接口是标记性接口,只要填上就行,不用实现的
www52rsNet 2012-06-14
  • 打赏
  • 举报
回复
web层的东西也不需要执意要去bll层处理吧?
可以作为参数去处理,或者就逻辑分离。
代码小天王 2012-06-14
  • 打赏
  • 举报
回复
孟老师说的是对的 你必须实现那个接口 才能对session进行操作
[Quote=引用 8 楼 的回复:]

引用加过了,我的是web应用程序,没有app_code
[/Quote]
夜色镇歌 2012-06-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
在这个类中为什么session总是为null,无论是否登录了
C# code

public class UserAuthorizationModule : IHttpModule
{
#region IHttpModule 成员
public void Dispose()
{
}
public void ……
[/Quote]


学习了。。。。。
孟子E章 2012-06-13
  • 打赏
  • 举报
回复
public class UserAuthorizationModule : IHttpModule, IRequiresSessionState
牛哥_ 2012-06-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
public class UserAuthorizationModule : IHttpModule, IRequiresSessionState
[/Quote]
+1
学习中

62,268

社区成员

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

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

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

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