2010-08-17 5 views
0

J'utilise Seesion dans mon projet qui stocke useTypeID (admin, manager etc.) et pour le backoffice seul l'admin et le manager peuvent entrer, donc dans chaque page de mon backoffice la première ligne i vérifier si le seesion est stile vivant et que l'utilisateur peut accéder à la page:Problème bizarre avec session et DDL

if (!EmployeeSession.IsAuthenticated || EmployeeSession.GetEmployeeType != 1 && EmployeeSession.GetEmployeeType != 2) 
     Response.Redirect("Default.aspx"); 

le même code pour toutes les pages ... et tous fonctionnent parfaitement.

J'ai une page qui me pose beaucoup de problèmes depuis que j'ai ajouté la session. La page est toujours correctement, mais quand je sélectionne une nouvelle zone de la perdre je suis LDD mon seesion pour certains Reson et le postback va à la fausse partie de la vérification de la session ...

Je debuged il et comme je le vois, c'est seulement parce que le DDL, est-ce que c'est ou ai-je un autre problème que je ne peux pas voir?

C'est le code dans le fichier .aspx:

<td><asp:DropDownList ID="ddlAreasSearch" runat="server" /></td> 

Voici le code dans le fichier .cs:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!EmployeeSession.IsAuthenticated || EmployeeSession.GetEmployeeType != 1 && EmployeeSession.GetEmployeeType != 2) 
     Response.Redirect("Default.aspx"); 

    if (Page.IsPostBack) 
     return; 

    DataSet ds = UiHelper.InitDDL(
         ddlAreasSearch, 
         0, 
         "AreaName", 
         "AreaID", 
         ConfigurationManager.AppSettings["ConnStr"], 
         "spAreas_Select" 
        ); 

} 

Le UiHelper est juste pour remplir une fonction avec LDD STAIC :

public static DataSet InitDDL(DropDownList ddl, Int16 DataSetTableIndex, string DataTextField, string DataValueField, string ConnectionString, string CommandName, params SqlParameter[] Params) 
{ 
    DataSet ds = DbHelper.ExecuteDataSet(ConnectionString, CommandName, Params); 
    ddl.DataSource = ds.Tables[DataSetTableIndex]; 
    ddl.DataTextField = DataTextField; 
    ddl.DataValueField = DataValueField; 
    ddl.DataBind(); 

    return ds; 
} 

La ligne qui appelle cette page est (juste a href ... rien de spécial, et planifions, j'ai environ 20 o Ther même que ar travail ... et quand il est pas un postback du tout est DDL travaille beaucoup, juste après le postback je suis à la recherche de la session):

<div><a href="SearchAreasWithDDL.aspx">חיפוש אזור</a></div> 

Je serai heureux de donner tout autre code si neccesery mais comme je le vois, c'est le code qui crée tous les problèmes ... Et comme je l'ai dit, toutes les autres pages font la même chose, la seule différence est le DDL ....

PS Je ne comprends même pas le clic de bouton obtenir les données relatives à la LDD, la session décède avant la i entrer dans la pageload de la page postback .... sur

10x

+0

Pouvez-vous poster le code par laquelle vous arrivez à cette page avec la liste déroulante? Pouvez-vous également confirmer en commentant la liste déroulante dans cette page si la session est conservée correctement ou encore perdue? – InSane

+0

Je n'ai pas compris la dernière partie de ce que vous avez demandé, mais si je l'ai fait alors, quand je ne vérifie pas pour une session la page fonctionne très bien ... et pour l'autre code .. je l'affiche .... 10x – Erez

+0

Ce que j'essayais de vous demander, c'est que si vous supprimez la liste déroulante de SearchAreasWithDDL.aspx, si vous passez de cette page à une autre page, la session est-elle toujours conservée ou est-elle perdue? Voir - ce que j'essaie de déterminer est de savoir si le problème est vraiment quelque chose à voir avec la liste déroulante ou non .... peut-être que vous pouvez télécharger le code entier pour SearchAreasWithDDL.aspx quelque part et poster un lien ... qui pourrait aider !! – InSane

Répondre

0

J'ai trouvé la solution, le problème n'a pas été becouse du LDD, il était becouse de deux choses ...

  1. J'ai un LinkButton le faire sur la redirection EXIT et moi une URL là-bas et aussi un code dans le btnClick dans le fichier CS et l'URL est plus fort que le fichier CS, quand j'ai enlevé l'URL de l'aspx c'était ok, mais a toujours des problèmes de sécurité avec le bouton beck et l'écriture de chemin d'URL libre donc j'ai utilisé ces lignes pour résoudre le problème et maintenant tout fonctionne très bien ...

    Response.Buffer = true; Response.ExpiresAbsolute = DateTime.Now.AddDays (-1d); Response.Expires = -1500; Response.CacheControl = "no-cache"; if (! EmployeeSession.IsAuthenticated || EmployeeSession.GetEmployeeType! = 1 & & EmployeeSession.GetEmployeeType! = 2) Response.Redirect ("Valeur par défaut.ASPX ");

Ces lignes cessent de mettre en cache les pages dans le navigateur et dans proxy pour les protocoles HTTP 1.0 et 1.1 ce qui devrait fonctionner ...

10x