读书人

cs资料获取Session报错

发布时间: 2012-09-19 13:43:54 作者: rapoo

cs文件获取Session报错
共有两个类文件

第一个:WebHttpModule.cs

C# code
using System;using System.Web;namespace DBUtility{    public class WebHttpModule : IHttpModule    {        #region IHttpModule 接口内置方法 -根方法-        void IHttpModule.Dispose()        {            //进行垃圾回收之前进行一些清理工作        }        void IHttpModule.Init(HttpApplication Application)        {            Application.AcquireRequestState += (Application_AcquireRequestState);        }        #endregion        #region 调用方法        private void Application_AcquireRequestState(Object source, EventArgs e)        {            //获取当前 HttpApplication 应用程序            HttpApplication Application = (HttpApplication)source;            #region 禁止非管理员用户访问机密路径文件            //如果访问者 访问管理员目录 Admin             if (Application.Request.Url.LocalPath.Trim().ToLower().IndexOf("/" + System.Configuration.ConfigurationManager.AppSettings["AdminCatalog"].ToString().Trim().ToLower() + "/") != -1)            {                //如果访问者 访问的是管理员目录下的 login.aspx 文件的话                if (Application.Request.Url.LocalPath.Trim().ToLower().IndexOf("/" + System.Configuration.ConfigurationManager.AppSettings["AdminCatalog"].ToString().Trim().ToLower() + "/login.aspx") != -1)                {                    //允许访问login.aspx文件                    return;                }                else if (Application.Request.Url.LocalPath.Trim().ToLower().IndexOf("/" + System.Configuration.ConfigurationManager.AppSettings["AdminCatalog"].ToString().Trim().ToLower() + "/css/") != -1)                {                    //允许访问css文件夹下内容                    return;                }                else if (Application.Request.Url.LocalPath.Trim().ToLower().IndexOf("/" + System.Configuration.ConfigurationManager.AppSettings["AdminCatalog"].ToString().Trim().ToLower() + "/images/") != -1)                {                    //允许访问images文件夹下内容                    return;                }                else if (Application.Request.Url.LocalPath.Trim().ToLower().IndexOf("/" + System.Configuration.ConfigurationManager.AppSettings["AdminCatalog"].ToString().Trim().ToLower() + "/javascript/") != -1)                {                    //允许访问javascript文件夹下内容                    return;                }                else                {                    //如果访问者 访问的不是管理员目录下的 CSS目录 JavaScript目录 Images目录 Flash目录 login.aspx文件                    //如果访问者不是管理员的话                    if (!DBUtility.Permissions.JudgeAdmin())                    {                        //将访问者请到404页面上                        Application.Response.StatusCode = 404;                        Application.Response.End();                    }                    else                    {                        //允许管理员访问                        return;                    }                }            #endregion            }        }        #endregion    }}



第二个:Permissions.cs
C# code
using System;using System.Web;using System.Web.SessionState;namespace DBUtility{    /// <summary>    /// 验证管理员、用户各种权限    /// </summary>    public class Permissions : IRequiresSessionState    {        #region 验证访问者是否是游客身份        /// <summary>        /// 验证访问者是否是游客身份        /// </summary>        /// <returns>是:true 否:false</returns>        public static bool PermissionsNull()        {            //验证访问者Session["Permissions"]是否为空            //就是说 访问者 目前是否是游客身份,只有游客身份Session["Permissions"]为空值                        if (HttpContext.Current.Session["Permissions"] == null)            {                //该访问者是游客身份                return true;            }            //该访问者非游客身份            return false;        }        #endregion        #region 验证 【超级管理员】        /// <summary>        /// 验证是否是超级管理员身份        /// </summary>        /// <returns>是:true 否:false</returns>        public static bool JudgeSupperAdmin()        {            //如果是非游客身份            if (!PermissionsNull())            {                //如果是超级管理员用户                if (System.Web.HttpContext.Current.Session["Permissions"].ToString() == "SuperAdmin")                {                    return true;                }                //不是超级管理员用户                else                {                    return false;                }            }            //这是游客身份            else            {                return false;            }        }        #endregion        #region 验证 【管理员以上】        /// <summary>        /// 验证是否是超级管理员或管理员身份        /// </summary>        /// <returns>是:true 否:false</returns>        public static bool JudgeAdmin()        {            //如果是非游客身份            if (!PermissionsNull())            {                //如果是管理员以上用户                if (System.Web.HttpContext.Current.Session["Permissions"].ToString() == "SuperAdmin" || System.Web.HttpContext.Current.Session["Permissions"].ToString() == "Admin")                {                    return true;                }                //不是管理员以上用户                else                {                    return false;                }            }            //这是游客身份            else            {                return false;            }        }        #endregion    }} 



系统报错:if (HttpContext.Current.Session["Permissions"] == null)
Session是Null 究竟怎么才能在cs文件中读取到Session

Session["Permissions"]绝对有值,我敢肯定



[解决办法]
你跟踪下
private void Application_AcquireRequestState(Object source, EventArgs e)

这个执行进到这里面了吗?

如果执行了,并且配置 了 EnableSessionState="True"
那么应该是可以得到的


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

读书人网 >asp.net

热点推荐