2010-04-29 12 views
1

Je suis en train de définir une variable de session dans un HttpHandler, puis d'obtenir sa valeur dans l'événement Page_load d'une page ASPX. Je la mise à l'aideUne variable de session est perdue en utilisant Firefox, fonctionne dans IE

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

(Et avant que quelqu'un suggère que je vérifie la validité de file.FileName, ce même problème se produit si je coder en dur une chaîne de test là-bas.) Cela fonctionne très bien dans IE , mais dans Firefox la variable de session ne se trouve pas, l'erreur « référence d'objet non définie à une instance d'un objet » dans le code suivant:

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

quelqu'un at-il rencontré ce problème - et nous espérons trouver une des moyens pour transmettre la variable de session?

Répondre

0

Ceci est pour un HTTPHandler? Si cela a quelque chose à voir avec Flash, et que Flash en fait la demande, vous serez très intéressé par la lecture de the Flash Cookie Bug. Fondamentalement, Flash ne transmet que les cookies IE. Le correctif easist consiste à appeler correctCookie à Application_BeginRequest dans votre fichier Global.asax et à placer le SessionId dans la chaîne de requête de la requête 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

Je ne suis pas en utilisant Flash- je dois saisir le nom d'un fichier téléchargé w/Uploadify (que j'ai quand je suis process_request du HttpHandler) et le transmettre à un éditeur d'image dans un autre ASPX page, donc l'appel dans Page_load obtenir le nom de fichier. Les cookies sont activés dans Firefox. Comme ce sera une application publique, je n'aurai pas de contrôle sur les paramètres du navigateur, mais je n'utilise que les paramètres par défaut installés avec Firefox, ce qui signifie qu'il est configuré pour accepter les cookies (cookies tiers aussi.) suggère toujours d'utiliser correctCookie & UpdateCookie comme ci-dessus? (Si oui, connaissez-vous un exemple C#, par hasard) – user328422