通过不同的ASP会话在c#中维护变量

时间:2012-09-09 22:24:29

标签: c# asp.net oracle variables global-variables

您好我有一个会话ID变量我正在从Oracle包传递到asp页面。我想要做的是坚持该变量并通过不同的调用将其传递回Oracle。我认为这应该很容易,但我失去了变量值。

解决方案中的其他所有功能都完美无缺。这只是一个小小的补充。

我不太确定在这个问题上有多少信息太多或太少,但基本上我有一个连接类,使用不同的方法在Oracle中调用不同的proc。通过按下asp页面上的两个按钮之一来调用每个。

一个方法(按钮点击)将传递会话ID(以及存在于永久Oracle表中的游标结果)。

然后,asp页面显示光标结果。

第二种方法(按钮点击)然后调用Oracle中的proc,根据会话ID将该表中存在的任何内容传递给另一个表。

为了确保传递正确的内容,我需要asp页面来保持会话ID(我得到了这个),然后在不同的调用中将它传递回Oracle。

在我们的宣言中

private string outSessionID;

    public string OutSessionID
    {
        get { return outSessionID; }
        set { outSessionID = value; }
    }

设置参数

的连接方法部分
addDbParameter(ref cmd, "outSession_ID", DbType.String, ParameterDirection.Output, null);

addDbParameter(ref cmd, "rc1", DbType.Object, ParameterDirection.Output, null);

 outSessionID = cmd.OutParameter<String>("outSession_ID");

我们有第二种方法

addDbParameter(ref cmd, "inSession_ID", DbType.String, ParameterDirection.Input, OutSessionID);

我是ASP的新手,所以对任何有关此信息丢失原因的见解表示赞赏。我认为它与回发是一个新的会话或某事有关,但我不确定。

我很乐意用更多代码进行推断,但不想提供任何不必要的东西。

感谢。

最后我添加了一个小方法,它在aspx.cs中收集了sessionId,然后在回发后调用该方法。尝试将pre-init中的值设置为page_load方法时发生了所有问题。通过在单击事件后调用单独的方法,我能够成功保存并调用sessionid。

感谢您的回复,他们非常乐于助人。

1 个答案:

答案 0 :(得分:2)

如果该信息不易出现安全问题,一种方法是在asp.net页面上有一个隐藏字段。注意:用户可以查看页面来源并查看隐藏字段的内容

<as:HiddenField runat="server" ID="MySessionID" />

然后在获得sessionId后,您可以存储它

MySessionID.Value = outSessionID;

以后再使用

outSessionID = MySessionID.Value;

这是另一个技巧

public string OutSessionID
{
    get { return ViewState["outSessionID"].ToString(); }
    set { ViewState["outSessionID"] = value; }
}