我正在使用 uploadify 上传文件,它们会自动发布到处理程序。然后,我在处理程序中修改会话,该处理程序已设置为网站公共类中的静态属性。然后我尝试在 aspx 页面中访问同一个会话,并且值为 null。我有一种感觉,这是因为 cookie,但需要有一种方法来解决这个问题,而不会在 url 中暴露 sessionid。
阿什克斯:
public class Upload : IHttpHandler, IReadOnlySessionState, IRequiresSessionState
{
public void ProcessRequest(HttpContext context)
{
...
CMSSession.Current.UploadedFiles.Add(fileName);
}
}
会话类:
public class CMSSession
{
public static CMSSession Current
{
get
{
CMSSession session = (CMSSession)HttpContext.Current.Session["__CMSSession__"];
if (session == null)
{
session = new CMSSession();
HttpContext.Current.Session["__CMSSession__"] = session;
}
return session;
}
}
public List<string> UploadedFiles { get; set; }
}
ASPX:
if (CMSSession.Current.UploadedFiles != null)
{
...
}
else
{
IT'S ALWAYS NULL
}
网络配置:
<sessionState mode="InProc" cookieless="false" /> - causes session to always null in aspx when modified in ashx
<sessionState mode="InProc" cookieless="true" /> - session value is not null, but sessionid is exposed in the url
如何在不将 cookieless 更改为 true 的情况下访问和修改 ASHX 文件中的当前会话,然后从 ASPX 页面访问会话?
我尝试过使用 HttpContext 并使用传递给 ASHX 的上下文......没有任何效果。
与此问题相同,但必须有更安全的方法:在 ashx 中设置会话并在 aspx 上获取该会话
有任何想法吗?