我不确定为什么在使用IE时,检索会话值工作得很好,但是在使用Google Chrome和Firefox时,它没有返回任何内容?
我已经在通用处理程序类中包含了IRequiresSessionState / IReadOnlySessionState,但仍然无效。
所以我最后的办法是将会话值添加为通用处理程序中的查询字符串。
但我仍然想知道Chrome和Firefox中的原因和错误是什么?感谢。
更新: 这是我处理我的Seesion SessionManager
的方式它在ASPX页面以及IE,Chrome和Firefox中完美运行
但在我的ASHX页面中使用时。下面的示例代码
<%@ WebHandler Language="C#" Class="Upload" %> using System; using System.Web; using System.Web.SessionState; using System.IO; public class Upload : IHttpHandler, IReadOnlySessionState { SessionManager sm; public void ProcessRequest (HttpContext context) { context.Response.ContentType = "text/plain"; context.Response.Expires = -1; sm = new SessionManager(); try { HttpPostedFile postedFile = context.Request.Files["Filedata"]; string uploadedas = string.Empty; if (context.Request.QueryString["as"] != null) { uploadedas = context.Request.QueryString["as"]; } string username = sm.Username; string sessionid = sm.SessionID; // // MORE CODES HERE // context.Response.Write(response); context.Response.StatusCode = 200; } catch (Exception ex) { context.Response.Write("Error: " + ex.Message + "\r\n\r\n" + ex.StackTrace); } } public bool IsReusable { get { return false; } } }
sm.Username和sm.SessionID在使用Chrome和Firefox时返回一个emptry字符串..但正如我之前所说,即使在不同的浏览器中,这些也在ASPX页面中完美运行。
答案 0 :(得分:0)
会话是一种cookie。确保您在所有正在测试的浏览器上启用了Cookie。
答案 1 :(得分:0)
你是如何从你的页面调用你的ashx的?你能给出样本代码吗?
你使用Flash来呼叫ashx吗? Flash有一个cookie错误,总是将IE cookie发送到服务器,无论你使用哪种浏览器,这都会使得访问ASP.NET Session变得很困难,因为它依赖于cookie。