您好我有一个会话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。
感谢您的回复,他们非常乐于助人。
答案 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; }
}