2016-09-20 47 views
1

私のサイトには最初にログインする必要のあるボタンがあります。クリックすると、ssrsレポートサーバーからレポートが取得され、同じページに表示されます。 リクエストクッキーで使用したセッションIDに注目しました。ASP.NET_Sessionidが更新中です

Picture of session ID

は今、私は私のキャッシュをクリアして、再度レポートを実行すると、それは次のエラーを取得し、「ASP.NETセッションの有効期限が切れました」が、それはセッションIDで応答クッキーを取得します。

ボタンをもう一度クリックすると、問題が発生します。サイトはssrsレポートサーバーからレポートを取得できますが、応答クッキーのセッションIDを使用します。

Pic of new session ID

誰もが、なぜこの行動が起こっているのアイデアを持って?他のスレッドは私に完全な説明を与えてくれませんでした。

答えて

1

あなたの説明は完全に正常です。

セッションIDは、基本的に、そのユーザーがアクセス可能な変数のテーブルを含む仮想メモリ空​​間へのポインタです。テーブルは永遠に保存されません。ASP.NETフレームワークが一定の時間(たとえば、設定に応じて20分または30分)セッションIDを表示しない場合、メモリスペースは解放され、他の用途のために再利用されます。そのセッションIDが後で表示された場合、そのセッションIDは何をするべきかわからず、「セッションが期限切れになっています」というエラーが表示されます。

あなたが見た最初のセッションIDは、おそらく以前のセッションから残っています。それは古いです、そして、そのメモリ空間がなくなったので、ASP.NETはあなたにエラーを与えます。

第2セッションIDは、有効なセッションを持たないすべての要求に対して自動的に発行されます。 ASP.NETは自動的にメモリスペースとランダムキーを作成し、あなたが見たその応答クッキーにそれを送り返します。ブラウザに最新のセッションCookieがあるので、もう一度ボタンをクリックするとわかるように、要求は正常に機能します。

関連する問題