Проблема сессии ASP.NET в ASHX и использовании Google Chrome и Firefox - PullRequest
1 голос
/ 07 сентября 2010

Не уверен, почему при использовании IE получение значений сеанса работает просто отлично, но при использовании Google Chrome и Firefox оно не возвращает ничего?

Я уже включил IRequiresSessionState / IReadOnlySessionState в общий класс обработчика, но все еще не работал.

Так что моим последним средством было добавить значения моего сеанса в виде строки запроса в универсальном обработчике.

Но я все еще хочу знать, почему и что не так в Chrome и Firefox? Спасибо.

UPDATE: вот как я справляюсь с 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 даже в разных браузерах.

Ответы [ 2 ]

0 голосов
/ 07 сентября 2010

Как вы называете свой аш со своей страницы?Можете ли вы дать пример кода?

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

0 голосов
/ 07 сентября 2010

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

...