以下代码适用于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();
}
}
答案 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发送给处理程序。