【问题标题】:Weird problem with session and DDL会话和 DDL 的奇怪问题
【发布时间】:2010-08-18 16:16:39
【问题描述】:

我在我的项目中使用 Seesion,它存储了 useTypeID(管理员、经理等),而对于后台,只有管理员和经理可以进入,所以在我后台的每个页面的第一行中,我检查是否视野仍然存在,只有这样用户才能进入页面:

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

所有页面都使用相同的代码...而且所有页面都运行良好。

自从我添加会话以来,我有一页给我带来了很多麻烦。该页面仍然正确显示,但是当我从 DDL 中选择一个新区域时,我失去了对某些 reson 的看法,并且回发转到会话检查的错误部分...

我调试了它,我看到它只是因为 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:

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...没什么特别的,而且,我还有大约20个其他相同的工作...当它不是来自DDL的回发时,一切都是工作得很好,就在回发之后我正在寻找会话):

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

如果需要,我很乐意提供任何其他代码,但在我看来,这是造成所有问题的代码......正如我所说,所有其他页面都在做同样的事情,唯一的区别是 DDL....

附:我什至没有点击按钮来获取与 DDL 相关的数据,会话在我进入回发页面的页面加载之前就终止了....

10 倍

【问题讨论】:

  • 您可以通过下拉菜单发布您进入此页面的代码吗?如果会话正确保留或仍然丢失,您还可以通过评论此页面中的下拉列表来确认吗?
  • 我不明白你问的最后一部分,但如果我这样做了,当我不检查会话时,页面运行良好......以及其他代码......我正在发布它....10x
  • 我想问你的是,如果你从 SearchAreasWithDDL.aspx 中删除下拉菜单,那么如果你从这个页面转到另一个页面,会话是仍然保留还是丢失了?看 - 我想确定的是这个问题是否真的与下拉菜单有关......也许你可以在某处上传 SearchAreasWithDDL.aspx 的整个代码并发布一个链接......这可能会有所帮助!

标签: c# asp.net session c#-3.0 drop-down-menu


【解决方案1】:

我找到了解决方案,问题不是因为 DDL,而是因为两件事......

  1. 我有一个 LinkBut​​ton,用于在 EXIT 上进行重定向,我在那里使用了一个 URL,并且在 CS 文件中的 btnClick 中也使用了一些代码,当我从 aspx 中删除 URL 时,URL 比 CS 文件强没问题,但是 beck 按钮和编写免费 url 路径仍然存在安全问题,所以我用这行来解决问题,现在一切都很好......

    Response.Buffer = true; Response.ExpiresAbsolute = DateTime.Now.AddDays(-1d); Response.Expires = -1500; Response.CacheControl = "无缓存"; if (!EmployeeSession.IsAuthenticated || EmployeeSession.GetEmployeeType != 1 && EmployeeSession.GetEmployeeType != 2) Response.Redirect("Default.aspx");

这些行停止在浏览器中缓存页面以及在 http 1.0 和 1.1 的代理中,所以这应该可以工作...

10 倍

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 2017-12-17
    • 1970-01-01
    • 2012-07-30
    相关资源
    最近更新 更多