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

时间:2012-01-30 14:32:35

标签: c# asp.net session cookies

我使用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();

我试过这个,即使这是空的

1 个答案:

答案 0 :(得分:0)

如果您使用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而不是HttpContext.Current.Request的参数。也许这是您的代码中的另一个问题。