セッションタイムアウトが発生したときにユーザーを自動サインアウトするために、アプリケーション全体で使用しているusercontrolを作成しました。そのために私はクッキー変数を使用しています。 ユーザーがアクティブであることを意味するので、ポストバックが発生すると、cookie変数をリセットする必要があります。次のコードビットは、私があれば継続的にチェックし、クライアント側のタイマーでサーバ側からクッキーのセットを取得するには、次のJavaScriptコードを使用していますJavascriptからサーバーサイドで作成されたCookieにアクセスする
DateTime date = DateTime.Now;
LoginDate = date.ToString("u", DateTimeFormatInfo.InvariantInfo).Replace("Z","");
int sessionTimeout = Session.Timeout;
dateExpress = date.AddMinutes(sessionTimeout);
ExpressDate = dateExpress.ToString("u", DateTimeFormatInfo.InvariantInfo).Replace("Z", "");
HttpCookie cookie = Request.Cookies["express"];
if (cookie == null)
{
cookie = new HttpCookie("express");
cookie.Path = "/somepath/";
cookie.Values["express"] = ExpressDate;
}
else
{
cookie.Values["express"] = ExpressDate;
}
「を表現する」クッキーに保存されます有効期限を設定し、セッションは終了しました
<script type="text/javascript">
var timeRefresh;
var timeInterval;
var currentTime;
var expressTime;
expressTime = "<%=ExpressDate %>";
currentTime = "<%=LoginDate %>";
//setCookie("express", expressTime);
timeRefresh = setInterval("Refresh()", 10000);
// Refresh this page to check session is expire or timeout.
function Refresh() {
var current = getCookie("express");
alert(current);
}
// Retrieve cookie by name.
function getCookie(name) {
var arg = name + "=";
var aLen = arg.length;
var cLen = document.cookie.length;
var i = 0;
while (i < cLen) {
var j = i + aLen;
if (document.cookie.substring(i, j) == arg) {
return getCookieVal(j);
}
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return;
}
function getCookieVal(offSet) {
var endStr = document.cookie.indexOf(";", offSet);
if (endStr == -1) {
endStr = document.cookie.length;
}
return unescape(document.cookie.substring(offSet, endStr));
}
しかし、私はいつもクライアント側からクッキーのための未定義の値を得ています。
PS:サーバー側で作成したセッション変数を使って、JavaScriptからアクセスしようとしましたが、セッション値を読み込んでも、セッション値を取得するページの負荷で割り当てられた最初の値しか読み取れませんでした次のポストバック
私は
Session["express"] = ExpressDate;
は次に、この
function Refresh()`
{
var current = '<%=Session["expiry"].ToString()%>'
alert(current) // This always return the first value assigned during page load
}`
のように、JavaScriptからそれにアクセスしようとしました)(pageloadでセッションExpressを設定しています
どんな助力も大変ありがとうございます。
実際に私はパスを未定義のままにしました。しかしそれでもクライアント側からクッキーを見つけることができません –
パスを ''/'' – Thaadikkaaran