zoukankan      html  css  js  c++  java
  • ASHX中引用Session 出现“呈现未将对象引用设置到实例上”

    在ASHX一般处理程序文件中如需调用Session必须继承System.Web.SessionState.IRequiresSessionState接口,才能实现Session读写!

    System.Web.SessionState的接口介绍:

    1. IReadOnlySessionState 指定目标 HTTP 处理程序只需要具有对会话状态值的读访问权限。这是一个标记接口,没有任何方法。
    2. IRequiresSessionState 指定目标 HTTP 处理程序需要对会话状态值具有读写访问权。这是一个标记接口,没有任何方法。

    自定义 HTTP 处理程序,从IHttpHandler继承,在写System.Web.HttpContext.Current.Session["Name"]的时候 没有问题,但想将这个Session写到某个变量时,发现Session的值为NULL;MSDN中的解决方法为:“在自定义 HTTP 处理程序中实现 IRequiresSessionState 接口,以确定处理程序是否需要对会话状态值具有读写访问权”,在自定义的类上加上该接口后,Session值获取正常。 

    解决办法:

    1.引用using System.Web.SessionState;

    2.在aspx类实现IReadOnlySessionState接口。如:public class {ClassName}: IHttpHandler, IReadOnlySessionState{…}

    原因:

    “IReadOnlySessionState”,指定目标HTTP处理惩罚法度只须要具有对话接见状况值的读接见权限。

    实际上是ashx文件起首是实现了IHttpHandler接口。但要接见page中的session状况值时,是两个应用范畴。

    微软默认状况下没有接见权限,所以ashx文件接见不了HttpContext.Current.Session,故呈现未将对象设置到实例上。

    只须要在实现IReadOnlySessionState接口即可。

    概括:

    1.using System.Web.SessionState;

    2.public class {ClassName}: IHttpHandler, IReadOnlySessionState

    “IReadOnlySessionState”,指定目标HTTP处理程序只需要具有对话访问状态值的读访问权限。

  • 相关阅读:
    利用智能手机(Android)追踪一块磁铁(三)
    利用智能手机(Android)追踪一块磁铁(二)
    利用智能手机(Android)追踪一块磁铁(一)
    android音频发生器
    接口的作用(java)
    Botposter.com集群ETCD2.3.7升级至3.0实录[原创]
    springboot2+jpa+hikari+oracle实战
    Nginx配置详解
    Nginx安装启动+springboot项目实现负载均衡实战
    springboot使用websocket进行实时传送信息实战(包含服务端和客户端)
  • 原文地址:https://www.cnblogs.com/jolab/p/4809250.html
Copyright © 2011-2022 走看看