• 一般处理程序(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.

  • 相关阅读:
    关于观察者模式和发布/订阅模式
    git:error: Your local changes to the following files would be overwritten by merge:
    node中几个路径的梳理
    centOS 开启服务器后无法访问(大坑啊)
    文件上传简记
    自建nodejs服务器(一:有个服务器)
    nodejs上使用sql
    express笔记
    windows下node配置npm全局路径(踩坑)
    DropMaster
  • 原文地址:https://www.cnblogs.com/professional-NET/p/4976158.html
Copyright © 2020-2023  润新知