码迷,mamicode.com
首页 > 其他好文 > 详细

一般处理程序(ashx)对session处理摘要

时间:2015-11-19 00:14:27      阅读:480      评论:0      收藏:0      [点我收藏+]

标签:

通常我们都会把当前操作系统的人员用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 Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.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 Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Web.dll
#endregion

namespace System.Web.SessionState
{
    //
    // 摘要:
    //     指定目标 HTTP 处理程序需要对会话状态值具有读写访问权。这是一个标记接口,没有任何方法。
    public interface IRequiresSessionState
    {
    }
}

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

一般处理程序(ashx)对session处理摘要

标签:

原文地址:http://www.cnblogs.com/professional-NET/p/4976158.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!