2010-09-17 3 views
1

Le code suivant fonctionne sur IE mais pas sur Firefox. Le code suivant définit la session sur le fichier * .ashx.session définie dans ashx et obtenir cette session sur aspx

public class Upload : IHttpHandler, IRequiresSessionState 
{ 
    public string PATH = System.Web.HttpContext.Current.Request.MapPath("..") + @"\UploadFiles\"; 
    public string prefix = "ANNUAL_"; 
    public void ProcessRequest(HttpContext context) 
    {    
     HttpPostedFile file = context.Request.Files["Filedata"]; 
     file.SaveAs(PATH + prefix + file.FileName);     
     HttpContext.Current.Session["filename"] = file.FileName; 
     context.Response.Write("1"); 
    } 
} 

Obtenir la session dans le fichier * .aspx est la suivante. Même si je peux définir la valeur dans les sessions dans le fichier * ashx, la valeur de la session est nulle lorsque la session arrive dans le fichier * .aspx. Comment puis-je résoudre mon problème? Pourriez-vous s'il vous plaît donner une solution à mon problème?

using System.Web.SessionState; 
public partial class frmImport : System.Web.UI.Page, IReadOnlySessionState 
{ 
    protected void btnSave_Click(object sender, EventArgs e) 
    { 
     string temp = HttpContext.Current.Session["filename"].ToString(); 
    } 
} 
+1

Le problème est probablement sur la configuration des cookies sur web.config, vous devez définir correctement le chemin et le domaine qui a défini le cookie. – Aristos

Répondre

1

Placez le code suivant dans web.config

<configuration> 
    <system.web> 
<sessionState mode="InProc" cookieless="true" /> 

Le problème est allé!

+0

J'espère que vous comprenez les implications, et non seulement parce que «ça marche» :( – eglasius

+0

ajoutant cela fait l'URL falsification de sessionID avec l'url ... qui ne sent pas beaucoup gud .. Comme http: // domain/(S (jjbbqk55fc0b3w55fwtyzd55))/Default.aspx à toutes les pages est-il une autre méthode pour obtenir la session sans altérer l'URL. – deepu