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