2


ASP.Net を使用して Web アプリケーションを作成しています。アプリケーションでセッションを使用しています。
Javascript を介してセッション変数にアクセスしようとしているシナリオが 1 つあります。通常の状態でアクセスすると、正常に動作しています。ただし、セッションの有効期限が切れた後、任意のボタンをクリックすると、例外がスローされて異常な動作をし、ページが見つからないという結果になります。
これが私が使用しているコードです。

 var TransactionID = '<% =((Hashtable)(Session["SessionData"]))["TransactionID "] %>';
 if(TransactionID !='')
 {
    //action
 }

私はC#で一種のようなものを達成しようとしています;

String lsStr;
if(null != lsStr)
{
    //action
}

セッションが存在するかどうか、またはJavaScriptを使用していないかどうかを確認する方法を誰かが知っている場合は、助けてください。
前もって感謝します。

4

2 に答える 2

1

コード ビハインド ページには、次のようなパブリック プロパティをお勧めします。

public string TransactionID
{
   get { 
        var data = ((Hashtable)(Session["SessionData"])); 
        if (data != null)
           return data["TransactionID "];
        else
           return null;
   }
}

即時エラーを回避するには。ポーリング メカニズムに期限切れを知らせたい場合は、JS タイマー カウントダウン/サーバーへの AJAX 呼び出しのアイデアを検討してください。サーバーから情報を要求せずに、クライアントからセッションを確認する方法はありません。

ただし、上記のプロパティを使用すると、ページがポストバックされ、クライアントでトランザクション ID JS 変数が null になり、セッションの有効期限も切れたことを識別する方法になります。

HTH。

于 2010-07-22T10:43:35.607 に答える
0

このチェックをタイマー クライアント側に配置することを提案すると、セッションが実行されるたびにセッションが延長され、セッションが期限切れにならなくなります。これが目的の機能である場合にのみ、これを行ってください。

最善の策は、認証を必要としないページに ajax リクエストを実行することによって、必要な場合にのみチェックを実行することです。そのページは、特定のセッション変数が存在するかどうかをテストし、true または false を返します。

例として、私が最近取り組んだアプリケーションには、セッションがまだ存在することを確認するためにチェックを必要とするクライアント側のロジックを含むページがありました。この場合、そのページの場合、userID は常に Session["UserID"] に格納されていることがわかっていたので、このオブジェクトが null の場合は false を返し、存在する場合は true を返す ac# ajax ページを作成しました。これにより、JavaScript からこのページを呼び出すことができました。セッションの有効期限が切れたかどうかを確認します。これはおそらく状況に合わせて少し変更する必要がありますが、同じロジックを使用して何かを行うことができると確信しています.

于 2010-07-22T10:39:18.547 に答える