2017-02-15 11 views
0

У меня проблема с сеансом, где мой обработчик не читает значения сеанса. Это ТОЛЬКО происходит на нашем сервере. Когда я запускаю локальный, он работает нормально. Я также звоню в IRequiresSessionState, так что это тоже не должно быть проблемой.Состояние сеанса, не работающее в файле ashx на сервере

Я могу видеть, что состояние сеанса все еще работает до тех пор, пока я не вызову свой файл ashx. Однако в этом файле сеанс потерян, согласно моему следу.

Вот мой Javascript код я использую, чтобы позвонить мой обработчик:

$(document).ready(function() { 
     $("#<%=btnAdd.ClientID%>").uploadify({ 
      'uploader': '../Scripts/Uploadify/uploadify.swf', 
      'script': '../Handlers/file1.ashx?mode=schedule', 
      'cancelImg': '../Images/cancel.png', 
      'wmode': 'transparent', 
      'hideButton': true, 
      'fileExt': '*.XML;*.xml;*.CIF;*.cif;*.zip;*.ZIP', 
      'fileDesc': 'Schedule Files', 
      'onComplete': function (event, queueID, fileObj, response, data) { 
       $('#pnlOverlayFrame').show(); 
       document.getElementById("<%=hdnFilePath.ClientID%>").value = response; 
      }, 
      'onAllComplete': function (event, queueID, fileObj, response, data) { 
       $get('<%= hdnDirty.ClientID %>').value = '0'; 
       //     document.getElementById('<%= btnConfirm.ClientID %>').click(); 
       document.getElementById('<%= btnUploadFiles.ClientID %>').click(); 
      } 

      , 
      'multi': true, 
      'expressInstall': '../Scripts/Uploadify/expressInstall.swf' 
     }); 

Ниже моего обработчика .cs файл кода

try 
      { 
       HttpPostedFile postedFile = context.Request.Files["Filedata"]; 
       if (context.Session != null && context.Session["CurrentDirectory"] != null) 
       { 
        StorageRoot = context.Server.MapPath(context.Session["CurrentDirectory"].ToString()); 
       } 
       else 
       { 
        //string DirectoryName = "OP1" + "_" + DateTime.Now.ToString().Replace('/', '_').Replace(':', '_').Replace(' ', '_') + Guid.NewGuid().ToString(); 
        string DirectoryName = "OP1" + "_" + String.Format("{0:yyyyMdHHmmss}", DateTime.Now) + Guid.NewGuid().ToString(); 

        //DirectoryName = DirectoryName.Remove(DirectoryName.Length - 3, 3); 
        HttpContext.Current.Session.Add("CurrentDirectory", DirectoryName); 
        //context.Session["CurrentDirectory"] = DirectoryName; 
        StorageRoot = context.Server.MapPath(DirectoryName); 
       } 


       string filename = postedFile.FileName; 
       if (!Directory.Exists(StorageRoot)) 
        Directory.CreateDirectory(StorageRoot); 

       postedFile.SaveAs(StorageRoot + @"\" + filename); 
       context.Response.Write(StorageRoot); 
       context.Response.StatusCode = 200; 

      } 
      catch (Exception ex) 
      { 
       context.Response.Write("Error: " + ex.Message); 
      } 

Каждый раз, когда он идет в еще части и создать новую папку, как в код. Пожалуйста, советы

+0

может быть CurrentDirectory не был настроен на сервере –

+0

HII спасибо за ответ, но CurrentDirectory это имя сеанса –

ответ

0

Я получил альтернативный способ обработки сеанса в ASJX файл я быть_наст пропуск сеанс в «scriptData»: { «SessionData»: CurrentDirectory}, помечать, чтобы Uploadify функции и получить эти данные в срок Формы

JavascriptCode

var currentDirectory = ""; 
    $(document).ready(function() {      
     $("#<%=btnAdd.ClientID%>").uploadify({      
      'uploader': '../Scripts/Uploadify/uploadify.swf', 
      'script': '../Handlers/file1.ashx?mode=schedule', 
      'scriptData': { 'SessionData': currentDirectory }, 
      'cancelImg': '../Images/cancel.png', 
      'wmode': 'transparent', 
      'hideButton': true, 
      'fileExt': '*.XML;*.xml;*.CIF;*.cif;*.zip;*.ZIP', 
      'fileDesc': 'Schedule Files', 
      'onComplete': function (event, queueID, fileObj, response, data) { 
       $('#pnlOverlayFrame').show(); 
       document.getElementById("<%=hdnFilePath.ClientID%>").value = response; 
       currentDirectory = response; 
       $("#<%=btnAdd.ClientID%>").uploadifySettings('scriptData', { 'SessionData': currentDirectory }); 
      }, 
      'onAllComplete': function (event, queueID, fileObj, response, data) { 
       $get('<%= hdnDirty.ClientID %>').value = '0'; 
       //     document.getElementById('<%= btnConfirm.ClientID %>').click(); 
       document.getElementById('<%= btnUploadFiles.ClientID %>').click();  
       currentDirectory = ""; 
      } 

      , 
      'multi': true, 
      'expressInstall': '../Scripts/Uploadify/expressInstall.swf' 
     }); 

мы установили данные сессии в onComplete случае с использованием ниже линии

$("#<%=btnAdd.ClientID%>").uploadifySettings('scriptData', { 'SessionData': currentDirectory }); 

и получить данные в C#, как ниже

string sessionValue = Convert.ToString(context.Request.Form["SessionData"])