【问题标题】:How to set session value in Handler in asp.net如何在asp.net的Handler中设置会话值
【发布时间】:2014-04-29 19:24:36
【问题描述】:

我正在使用 uploadify 上传音频文件。它使用处理程序upload.ashx 将文件上传到服务器。我想在我的 aspx 页面中获取文件路径。所以我试图在处理程序中设置一个会话,以便我在 aspx 中获取文件路径,但我无法这样做。如何获取从处理程序到 .aspx 页面的文件路径值

public class Upload : IHttpHandler {

    public void ProcessRequest (HttpContext context) { 
       string savepath = context.Server.MapPath(tempPath);
       context.Session["AudioFile"] = savepath;

   }  }

抛出空引用异常:对象引用未设置为对象的实例。

【问题讨论】:

    标签: c# asp.net session cookies handler


    【解决方案1】:

    IRequiresSessionState Interface 添加到您的处理程序定义中。或者IReadOnlySessionState,如果您只需要只读信息,因为这可以通过避免锁定和写回会话值来略微提高性能。

    它只是一个标记接口,告诉运行时,这个处理程序需要会话状态。

    public class Upload : IHttpHandler, IRequiresSessionState{
        //...
    }
    

    【讨论】:

    • 现在我可以在处理程序中设置会话值,但是在aspx页面中会话值始终为空,为什么它为空
    • 处理程序中的会话 ID 与我在 aspx 页面中得到的不同。是这个问题吗
    • 如果您从不同的浏览器发送请求,您将获得不同的会话,因此会获得不同的会话 ID。或者只是重新启动您的 Web 服务器,并从不同的选项卡请求一个页面或处理程序。可能这是你的问题。
    【解决方案2】:

    将接口 IRequiresSessionState 添加到您的方法中 喜欢 公共类上传:IHttpHandler,IRequiresSessionState {

    }

    【讨论】:

    • 您能解释一下对@AkosLukacs 答案的增强吗?
    猜你喜欢
    • 1970-01-01
    • 2013-06-27
    • 2023-04-01
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 2017-08-04
    • 1970-01-01
    相关资源
    最近更新 更多