【问题标题】:How can I get the session value in code behind from handler page如何从处理程序页面获取代码中的会话值
【发布时间】:2012-01-30 22:40:00
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# asp.net session cookies


    【解决方案1】:

    如果您使用 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。也许这是您代码中的另一个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-14
      相关资源
      最近更新 更多