Переменная сессии теряется с помощью Firefox, работает в IE - PullRequest
1 голос
/ 29 апреля 2010

Я устанавливаю переменную Session в HttpHandler, а затем получаю ее значение в событии Page_load страницы ASPX. Я устанавливаю это с помощью

    public void ProcessRequest(HttpContext context)
    {
        HttpPostedFile file = context.Request.Files["Filedata"];
        context.Session["WorkingImage"] = file.FileName;
    }

(И до того, как кто-то предложит мне проверить правильность файла. FileName, эта же проблема возникает, если я жестко закодирую тестовую строку там.) В IE все работает нормально, но в Firefox переменная сессии не найдена , получая ошибку «Ссылка на объект не установлена ​​на экземпляр объекта» в следующем коде:

   protected void Page_Load(object sender, EventArgs e)
   {
        string loc = Session["WorkingImage"].ToString();
   }

Кто-нибудь сталкивался с этой проблемой - и, надеюсь, найдет способ передать переменную сеанса?

1 Ответ

0 голосов
/ 29 апреля 2010

Это для HTTPHandler? Если по какой-то причине это как-то связано с Flash, и Flash делает запрос, вам будет очень интересно прочитать о ошибке Flash Cookie . По сути, Flash только пересылает файлы cookie IE.

Простое исправление заключается в вызове correctCookie в Application_BeginRequest в вашем Global.asax и вставке SessionId в строку запроса Flash-запроса.

Public Shared Sub correctCookie()
    Try
        Dim session_cookie_name As String = "ASP.NET_SESSIONID"
        Dim session_value As String = HttpContext.Current.Request.QueryString("sid")
        If session_value IsNot Nothing Then
            UpdateCookie(session_cookie_name, session_value)
        End If
    Catch ex As Exception
    End Try
End Sub

Private Shared Sub UpdateCookie(ByVal cookie_name As String, ByVal cookie_value As String)
    Dim cookie As HttpCookie = HttpContext.Current.Request.Cookies.[Get](cookie_name)
    If cookie Is Nothing Then
        Dim cookie1 As New HttpCookie(cookie_name, cookie_value)
        HttpContext.Current.Response.Cookies.Add(cookie1)
    Else
        cookie.Value = cookie_value
        HttpContext.Current.Request.Cookies.[Set](cookie)
    End If
End Sub
...