2010-09-17 3 views
1

Следующий код работает с IE, но не с Firefox. Следующий код устанавливает сеанс в * .ashx файле.сеансовый набор в ashx и получить этот сеанс на 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"); 
    } 
} 

Получение сеанса в * .aspx-файле выглядит следующим образом. Несмотря на то, что я могу установить значение в сеансах в файле * ashx, значение сеанса равно null, когда сеанс поступает в файл * .aspx. Как я могу решить свою проблему? Не могли бы вы дать какое-либо решение моей проблемы?

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

Проблема, вероятно, в настройке cookie на web.config, вам нужно, чтобы вы правильно установили путь и домен, которые устанавливали cookie. – Aristos

ответ

1

Поместите следующий код в Web.Config

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

Проблема исчезла!

+0

Надеюсь, вы понимаете последствия, и не только это, потому что «это работает» :( – eglasius

+0

, добавив, что это делает попытку ввода URL с идентификатором sessionID с URL-адресом ... который чувствует себя не так много. Как http: // domain/(S (jjbbqk55fc0b3w55fwtyzd55))/Default.aspx для всех страниц есть какой-либо другой метод для получения сеанса без вмешательства в URL. – deepu