zoukankan      html  css  js  c++  java
  • 一般处理程序(ashx)对session处理摘要

    通常我们都会把当前操作系统的人员用session记录下来。方便我们记录对当前数据操作有记录处理凭证。

    在一般处理程序(ashx)中,遇到如下操作session的异常:

    “System.NullReferenceException”类型的异常在 App_Web_vea5kecg.dll 中发生,但未在用户代码中进行处理
    
    其他信息: 未将对象引用设置到对象的实例。

     异常代码如下红色字体部分:

            var result = "";
            int userid = 0;
            if (HttpContext.Current.Session["User"] == null)
            {
                result ="no";
            }
            else {
    
                User user = HttpContext.Current.Session["User"] as User;
                userid = user.Id;
            }

     从异常的提示中我们可以看到引发的是空引用的异常。

    解决方法需要做二件事:

    第一、引入命名空间:using System.Web.SessionState;

    第二、继承接口:IReadOnlySessionState,示例如下:

    public class M_DeliveryList : IHttpHandler ,IReadOnlySessionState
    {
    //do something }

    通过以上二步设置我们即可对session继续判断操作。为了弄个究竟我们习惯对其源头一探究竟F12.
    通过对IReadOnlySessionState这个接口按F12我们可以看到如下代码:

    #region 程序集 System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
    // C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.0System.Web.dll
    #endregion
    
    namespace System.Web.SessionState
    {
        //
        // 摘要:
        //     指定目标 HTTP 处理程序只需要具有对会话状态值的读访问权限。这是一个标记接口,没有任何方法。
        public interface IReadOnlySessionState : IRequiresSessionState
        {
        }
    }

     在备注中我们可以看到引用的相关组件及其存放当前系统的路径,以及此接口的作用解析。我们发现其还继承了个接口IRequiresSessionState,于是继续F12得到如下代码:

    #region 程序集 System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
    // C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.0System.Web.dll
    #endregion
    
    namespace System.Web.SessionState
    {
        //
        // 摘要:
        //     指定目标 HTTP 处理程序需要对会话状态值具有读写访问权。这是一个标记接口,没有任何方法。
        public interface IRequiresSessionState
        {
        }
    }

     通过注释我们可以看到2个接口都没有没有方法,其主要是通过Http处理程序标记对会话状态值具有读写访问权限,从而就不难理解异常发生的原因了。The end.

  • 相关阅读:
    bootstrap-datetimepicker使用记录
    Highcharts使用====一些问题记录
    值类型 引用类型
    java 发送邮件
    包括post,get请求(http,https)的HttpClientUtils
    整理的java的日期DateUtil
    oracle随机取数据
    oracle查询表的索引
    有关dwr推送的笔记
    java 超经漂亮验证码
  • 原文地址:https://www.cnblogs.com/professional-NET/p/4976158.html
Copyright © 2011-2022 走看看