Проблема сеанса ASP.NET в ASHX и использовании Google Chrome и Firefox

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


person jaysonragasa    schedule 07.09.2010    source источник
comment
Как настроить параметры cookie для сеанса? можешь дать здесь код?   -  person Aristos    schedule 07.09.2010
comment
Я не могу воспроизвести проблему в FireFox. Я зарегистрировал простой класс, реализующий IHttpHandler, IRequiresSessionState и IReadOnlySessionState, и мой обработчик без проблем считывает сохраненные значения сеанса из запросов FireFox 3.6.8. Возможно, если вы предоставите дополнительную информацию о своих клиентских и серверных средах, мы сможем разобраться в корне проблемы.   -  person kbrimington    schedule 07.09.2010
comment
Вы нашли решение? У меня такая же проблема с браузером Opera.   -  person Soonts    schedule 16.11.2010
comment
У меня такая же проблема, вы нашли решение? Я обращаюсь к обработчику с помощью скрипта AS3, проблема может быть там, дайте нам знать, если вы сделаете то же самое.   -  person Maksim Vi.    schedule 26.11.2010


Ответы (2)


Сеанс - это тип файла cookie. Убедитесь, что у вас включены файлы cookie во всех браузерах, в которых вы тестируете.

person Tom Gullen    schedule 07.09.2010
comment
спасибо Том. Повторная проверка этих параметров в Google Chrome и Firefox, сохранение файлов cookie включено. - person jaysonragasa; 07.09.2010

Как ты звонишь своему ашху со своей странички? Вы можете привести пример кода?

Вы используете Flash для вызова ashx? Flash имеет ошибку cookie, которая всегда отправляет файлы cookie IE на сервер, который, независимо от того, какой браузер вы используете, затрудняет доступ к сеансу ASP.NET, поскольку он полагается на cookie.

person Andreas Paulsson    schedule 07.09.2010