2010-04-29 6 views
1

Я устанавливаю переменную Session в HttpHandler, а затем получаю ее значение в событии Page_load страницы ASPX. Я устанавливаю его с помощьюЗадержка сеанса с использованием Firefox, работает в IE

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

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

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

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

ответ

0

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

Решение easist должно вызвать 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 
+0

Я не использую флэш мне нужно, чтобы захватить имя файла загруженного ж/Uploadify (который я имею, когда я нахожусь в Process_Request из HttpHandler) и передать его в редакторе изображений в другой ASPX страницу, таким образом вызов в Page_load получает имя файла. Cookies включены в Firefox. Поскольку это будет публичное приложение, у меня не будет контроля над настройками браузера, но я просто использую настройки по умолчанию, установленные с Firefox, что означает, что он настроен на прием файлов cookie (сторонние файлы cookie тоже.) Вы все еще предлагаете использовать correctCookie & UpdateCookie, как указано выше? (Если да, то знаете ли вы пример C#, случайно) – user328422