Не уверен, почему при использовании 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 ... но, как я сказал ранее, они отлично работают на страницах ASPX даже в разных браузерах.