欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ashx中使用session的方法(获取session值)

程序员文章站 2024-02-28 14:56:52
web开发,在一般处理程序中,很容易得到 request和response对象,如:复制代码 代码如下:httprequest _request = context.req...

web开发,在一般处理程序中,很容易得到 request和response对象,如:

复制代码 代码如下:

httprequest _request = context.request;

httpresponse _response = context.response;

但是要得到 session的值就没有那么简单了。

比如如果要在ashx得到保存在session中的登录用户信息 session["loginuser"]

如果仅仅使用 context.session["loginuser"] 的话,是会报 “未将对象引用设置到对象的实例”的异常!

具体要使用下列方法:

复制代码 代码如下:

using system;
using system.collections.generic;
using system.linq;
using system.web;
using system.web.sessionstate;

namespace dtlcalendar.mobile.site.manage
{
    /// <summary>
    /// delapk 的摘要说明
    /// </summary>
    public class delapk : ihttphandler, ireadonlysessionstate
    {
        // ireadonlysessionstate :只读访问session
        // irequiressessionstate :读写访问session
        public void processrequest(httpcontext context)
        {
            string strid = context.request["id"];
            context.response.clear();
            context.response.contenttype = "text/plain";
            int id;
            string user;
            if (int.tryparse(strid, out id) && isloged(context, out user))
            {
                string reslt = dataprovider.mobiledataprovider.createinstance().delmapk(id).tostring();
                bll.logoprhelper.instance.insertmlog(user, bll.logopr.delete, "delapk result:" + reslt);
                context.response.write(reslt);
            }
            else
            {
                bll.logoprhelper.instance.insertmlog(strid, bll.logopr.delete, "delapk result:-1");
                context.response.write("-1");
            }
        }

        private bool isloged(httpcontext context, out string user)
        {
            bll.user _user;
            if (context.session["loginuser"] != null)
            {
                _user = context.session["loginuser"] as bll.user;
                if (_user != null)
                {
                    user = _user.account;
                    return true;
                }
            }
            user = string.empty;
            return false;
        }

        public bool isreusable
        {
            get
            {
                return true;
            }
        }
    }
}