如何从处理程序页面获取代码隐藏中的会话值

本文关键字:隐藏 取代码 会话 获取 处理 程序 | 更新日期: 2023-09-27 18:22:05

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

   public class Upload : IHttpHandler,IRequiresSessionState        {   
    public void ProcessRequest (HttpContext context)         {        
    string savepath = context.Server.MapPath(tempPath);     
    context.Session["VideoFile"] = savepath;     }  } 

在我的aspx页面中,当我尝试获取文件路径时

      DocLink = Session["VideoFile"].ToString();

会话值始终为null。如何在后面的代码中获取会话值

 string path= HttpContext.Current.Request.Cookies["VideoFile"].ToString();

我试过了,即使这是空

如何从处理程序页面获取代码隐藏中的会话值

如果使用context.Session["VideoFIle"]之类的上下文调用它,并且一切正常,那么第二个可能的原因是您没有设置cookie属性上的正确路径。

在web.config上的httpCookies上检查并设置域,以确保它不包含www.,并且能够从域上启动的任何页面读取它

<httpCookies domain="domain.com" httpOnlyCookies="false" requireSSL="false" />

为什么会这样,因为如果你不在cookie上设置域,那么cookie就会被写入从url读取的域,会话就会连接到cookie。如果你的域发生了变化,例如你用www.domain.com调用它,而在一个页面调用中你使用domain.com,那么cookie就不一样了,会话也不一样了。

备注

在处理程序中,上下文是从调用ProcessRequest的parameter混合而来的,而不是从HttpContext.Current.Request混合。也许这是您的代码中的又一个问题。