Странная проблема с сессией и DDL - PullRequest
0 голосов
/ 17 августа 2010

Я использую Seesion в своем проекте, в котором хранится useTypeID (admin, manager и т. Д.), И для бэк-офиса могут входить только администратор и менеджер, поэтому на каждой странице в моем бэк-офисе в первой строке я проверяю,качели еще живы, и только тогда пользователь может зайти на страницу:

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

Один и тот же код для всех страниц ... и все они работают отлично.

У меня естьодна страница, которая доставляет мне много хлопот, так как я добавил сессию.Страница по-прежнему отображается правильно, но когда я выбираю новую область из DDL, я теряю способность к резонансу, и постбэк переходит к ложной части проверки сеанса ...

Iотладил и, как я вижу, это только из-за DDL, может ли это быть или у меня есть какая-то другая проблема, которую я не вижу?

Это код в файле .aspx:

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

Это код в файле .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"
                    );

}

UiHelper просто для заполнения DDL с помощью функции 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;
}

строка, которая вызывает эту страницу (просто href ... ничего особенного, и agian, у меня есть еще около 20 таких же, как работает ... и когда это не обратная передача от DDL, все работает отлично, простопосле обратной передачи я смотрю сессию):

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

Я буду рад дать любой другой код, если понадобится, но, как я вижу, это код, который создает все проблемы ... Икак я сказал, все остальные страницы делают то же самое, единственное отличие - это DDL ....

PS Я даже не могу нажать на кнопку, чтобы получить данные, относящиеся к DDL. Сессия умирает до того, как я ввожу загрузку страницы при обратной передаче ....

10x

1 Ответ

0 голосов
/ 18 августа 2010

Я нашел решение, проблема была не в DDL, а в двух вещах ...

  1. У меня есть LinkButton для перенаправления do на EXITи я использовал URL там, а также некоторый код в btnClick в CS-файле, и URL-адрес сильнее, чем CS-файл, когда я удалил URL из aspx, он был в порядке, но все еще имеет проблемы с безопасностью с кнопкой beck инаписание свободного пути URL, поэтому я использовал эти строки для решения проблемы, и теперь все работает отлично ...

    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 ("Default.aspx");

Эти строки прекращают кэшированиестраницы в браузере и прокси для http 1.0 и 1.1, так что это должно работать ...

10x

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...