0

こんにちは、Oracleパッケージからaspページに渡すセッションID変数があります。私がやりたいのは、その変数を保持し、別の呼び出しを介してOracleに返すことです。これは簡単なはずだと思いますが、変数の値を失います。

ソリューション内の他のすべてが完全に機能しています。ほんの少しの追加です。

この質問に関する情報が多すぎるか少なすぎるかはわかりませんが、基本的には、Oracleでさまざまなプロシージャを呼び出すためのさまざまなメソッドを持つ接続クラスがあります。それぞれは、aspページの2つのボタンのいずれかを押すことによって呼び出されます。

1つのメソッド(ボタンクリック時)は、セッションIDを(永続的なOracleテーブルに存在するカーソル結果とともに)渡します。

次に、aspページにカーソルの結果が表示されます。

次に、2番目のメソッド(ボタンクリック時)は、Oracleのprocを呼び出して、そのテーブルに存在するものをセッションIDに基づいて別のテーブルに渡します。

正しいコンテンツが確実に渡されるようにするには、セッションIDを保持するaspページが必要です(これまでに取得しました)。次に、別の呼び出しで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");

2番目の方法では

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

私はASPを初めて使用するので、この情報が失われる理由についての洞察をいただければ幸いです。ポストバックが新しいセッションか何かと関係があると思いますが、正確にはわかりません。

より多くのコードで推定できれば幸いですが、不要なものは提供したくありません。

ありがとう。

最後にそれを追加するために、aspx.csでsessionIdを収集し、ポストバック後にそのメソッドを呼び出す小さなメソッドを追加しました。pre-init内の値をpage_loadメソッドに設定しようとすると、すべての問題が発生しました。クリックイベントの後に別のメソッドを呼び出すことで、セッションIDを正常に保存して呼び出すことができました。

回答ありがとうございました、彼らは非常に役に立ちました。

4

1 に答える 1

2

その情報がセキュリティの影響を受けにくい場合、1つのアプローチは、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; }
}
于 2012-09-09T22:36:23.010 に答える