在ashx中设置会话并在aspx上获取该会话

时间:2010-09-17 06:04:58

标签: asp.net

以下代码适用于IE,但不适用于Firefox。 以下代码在* .ashx文件上设置会话。

public class Upload : IHttpHandler, IRequiresSessionState
{
    public string PATH = System.Web.HttpContext.Current.Request.MapPath("..") + @"\UploadFiles\";
    public string prefix = "ANNUAL_";
    public void ProcessRequest(HttpContext context)
    {            
        HttpPostedFile file = context.Request.Files["Filedata"];
        file.SaveAs(PATH + prefix + file.FileName);                
        HttpContext.Current.Session["filename"] = file.FileName;  
        context.Response.Write("1");
    }
}

在* .aspx文件中获取会话如下。即使我可以将值设置到* ashx文件中的会话中,当会话到达* .aspx文件时,会话值为null。 我怎样才能解决我的问题?你能解决一下我的问题吗?

using System.Web.SessionState;
public partial class frmImport : System.Web.UI.Page, IReadOnlySessionState
{
    protected void btnSave_Click(object sender, EventArgs e)
    {
        string temp = HttpContext.Current.Session["filename"].ToString();
    }
}

2 个答案:

答案 0 :(得分:1)

将以下代码放在Web.Config

<configuration>
   <system.web>
<sessionState mode="InProc"  cookieless="true" />

问题已经消失了!

答案 1 :(得分:-1)

以下是解决此问题的真正解决方案:How to access session in aspx that was modified in ashx?

这是因为flash不会将sessionid发送给处理程序。