zoukankan      html  css  js  c++  java
  • 如何在ashx页面获取Session值

    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;
                }
            }
        }
    }
    View Code
  • 相关阅读:
    ArcGIS 添加 MarkerSymbol 弹出“图形符号无法序列化为 JSON”错误
    C#中为特定类型增加扩展方法
    C# 访问Oracle数据库
    SQL Server2012中时间字段为DateTime和VarChar的区别
    Visual Studio2012调试时无法命中断点
    Prism框架研究(三)
    Prism框架研究(二)
    WPF Path总结(一)
    性能测试 -- 服务器参数调整
    eclipse-->run as --> maven test 中文乱码
  • 原文地址:https://www.cnblogs.com/lucienbao/p/ashx_session.html
Copyright © 2011-2022 走看看