C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.5878 の関連記事表示

<< 0 | 1 >>
■5878  Re[2]: わんくま同盟メンバー増殖中のためRSSに登録するのが追いつかないよ〜
□投稿者/ 買太郎 -(2006/08/23(Wed) 18:25:45)

    分類:[その他の質問] 

    作れるんですか???

    お手数でなければ、ぜひ作って欲しいです。
    こんなに、MVPの登録されてるサイトも少ないし、他の方も有効に活用できると思いますし。
記事No.5875 のレス /0過去ログ5より / 関連記事表示
削除チェック/

■5878  ASP.NET セッション ハートビート
□投稿者/ たろ -(2007/07/25(Wed) 11:54:31)

    分類:[.NET 全般] 

    開発環境:windowsXP・IE5.0〜6.0
    使用言語:ASP.NET・C#・javascript

    入力内容を更新する画面で、
    放置していてもセッションがきれないようにする為、
    今は定期的にjavascriptからiframeにポストバックしています。

    【ソース例】

    /**
    * セッション継続設定関数
    */
    function StartKeepActive(strActiveSource)
    {
    m_strActiveSource = strActiveSource;
    m_keep_active_timerid = setTimeout('KeepActive()', ALIVE_INTERVAL);
    }


    /**
    * セッション継続関数
    */
    function KeepActive()
    {
    document.ActiveForm.REQ_ACTIVE_SOURCE.value = m_strActiveSource;
    document.ActiveForm.target = "ActiveIFrame";
    document.ActiveForm.action = "KeepSessionForm.aspx";
    document.ActiveForm.submit();

    //セッションタイムアウトしないため、定期的にサーバに接続する。
    m_keep_active_timerid = setTimeout('KeepActive()', ALIVE_INTERVAL);
    }

    /**
    * セッション継続クリア関数
    */
    function ClearKeepActive()
    {
    if(m_keep_active_timerid > 0) clearTimeout(m_keep_active_timerid);
    }



    <iframe id="ActiveIFrame" name="ActiveIFrame" style="Z-INDEX: 103; LEFT: 0px; WIDTH: 0px; POSITION: absolute; TOP: 0px; HEIGHT: 0px" 
    src="" scrolling="no"></iframe>
    <form name="ActiveForm" method="post">
    <input id="REQ_ACTIVE_SOURCE" type="hidden" name="REQ_ACTIVE_SOURCE"/>
    </form>



    こんな感じです。

    しかし、これだとjavascriptのalertを表示し続けるとハートビートできずにセッションタイムアウトを起こしてしまいます。
    何かセッションをキープする方法はありますでしょうか?

親記事 /過去ログ16より / 関連記事表示
削除チェック/

■5882  Re[1]: ASP.NET セッション ハートビート
□投稿者/ れい -(2007/07/25(Wed) 12:39:24)
    No5878 (たろ さん) に返信
    > 開発環境:windowsXP・IE5.0〜6.0
    > 使用言語:ASP.NET・C#・javascript
    > 何かセッションをキープする方法はありますでしょうか?

    セッションを永遠にキープされると
    サーバーが困ってしまうでしょう。

    本来、接続しているかどうかは
    HTTPより上のレベルでは意識してはいけないわけですし。

    タイムアウトを長くするのではだめですか?
記事No.5878 のレス /過去ログ16より / 関連記事表示
削除チェック/

■5884  Re[2]: ASP.NET セッション ハートビート
□投稿者/ たろ -(2007/07/25(Wed) 12:45:02)
    No5882 (れい さん) に返信
    > ■No5878 (たろ さん) に返信
    >>開発環境:windowsXP・IE5.0〜6.0
    >>使用言語:ASP.NET・C#・javascript
    >>何かセッションをキープする方法はありますでしょうか?
    >
    > セッションを永遠にキープされると
    > サーバーが困ってしまうでしょう。
    >
    > 本来、接続しているかどうかは
    > HTTPより上のレベルでは意識してはいけないわけですし。
    >
    > タイムアウトを長くするのではだめですか?
    >

    ご返答ありがとうございます。

    他の画面(フレーム)を表示した場合には、設定した時間でセッションタイムアウトさせたいので、
    タイムアウトを長くするのは最終手段だと考えております。

記事No.5878 のレス /過去ログ16より / 関連記事表示
削除チェック/

■5881  Re[1]: ASP.NET セッション ハートビート
□投稿者/ 黒龍 -(2007/07/25(Wed) 12:38:39)
    セッションを永続化することでいかがでしょうか?
記事No.5878 のレス /過去ログ16より / 関連記事表示
削除チェック/

■5883  Re[2]: ASP.NET セッション ハートビート
□投稿者/ たろ -(2007/07/25(Wed) 12:42:18)
    No5881 (黒龍 さん) に返信
    > セッションを永続化することでいかがでしょうか?

    ご返答ありがとうございます。

    申し訳ありません。説明が不足していました。

    この画面(フレーム)を表示している場合のみセッションをきれないようにしたいのです。
    画面(フレーム)ごとに永続化することって可能でしょうか?
記事No.5878 のレス /過去ログ16より / 関連記事表示
削除チェック/

■5886  Re[1]: ASP.NET セッション ハートビート
□投稿者/ 魔界の仮面弁士 -(2007/07/25(Wed) 12:58:17)
    No5878 (たろ さん) に返信
    > しかし、これだとjavascriptのalertを表示し続けるとハートビートできずにセッションタイムアウトを起こしてしまいます。

    alert を使わないよう修正するとか。。。
記事No.5878 のレス /過去ログ16より / 関連記事表示
削除チェック/

■5890  Re[1]: ASP.NET セッション ハートビート
□投稿者/ mあ -(2007/07/25(Wed) 13:17:42)
    2007/07/25(Wed) 13:30:04 編集(投稿者)
    2007/07/25(Wed) 13:28:57 編集(投稿者)
    2007/07/25(Wed) 13:25:11 編集(投稿者)

    No5878 (たろ さん) に返信
    > 【ソース例】
    (Snip)
    > こんな感じです。
    >
    > しかし、これだとjavascriptのalertを表示し続けるとハートビートできずにセッションタイムアウトを起こしてしまいます。
    > 何かセッションをキープする方法はありますでしょうか?

    alert() を表示するとユーザーアクションが無いとバックグランド作業がとまってしまうからですよね。

    # 訂正(1)
    # なるほど、alert() を一杯いろんなとこで使っているのですか。
    # ふーむ。。。IE オンリーなら、showModelessDialog で alert メッセージダイアログや
    # confirm を上書きしてしまうのはどーですかね?

    # 試してないので自身ないですが、
    # window.alert = function(msgNo) {
    # showModelessDialog("alert.html?msgNo="+ msgNo);
    # }
    #
    # とか出来るかもしれませんね。モーダルではないので、親画面と並列動作できます。
    #
    # 訂正(2)
    #<script>
    #window.alert = function() {
    # alert(" あらーとの上書き ");
    #}
    #window.confirm = function() {
    #
    # alert(" こんふぁーむのうわがき ");
    #
    #}
    #confirm("ok");
    #</script>
    #
    # 標準実装のメソッドはさすがに無理でした・・・
    #

    以下動く保証なしですm(__)m
    <iframe id="frame1" width=0 height=0></iframe>
    <script>
    //30 秒毎にセッション継続ライフビートを送信、受け取ったら忍者ツールみたいに画面隅っこ
    //にぼんやり表示(表示は5秒後にフェードアウト)。
    var saID = null;
    (function() {
    saID = setTimeout(function() {
    var o = document.getElementById("frame1");
    o.onreadystatechange = function() {
    if (this.readyState == 4) {
    showKeepAlive();
    }
    }
    o.src = "KeepSessionForm.aspx";
    }, 30000 );
    })();
    function showKeepAlive() {
    var o = document.getElementById("KEEP_ALIVE_MESSAGE");
    o.style.visibility = "visible";
    o.style.filter = "alpha(opacity=100)";
    var opac = 100;
    setTimeout(function() {
    opac -= 5;
    if (opac > 0) {
    o.style.filter = "alpha(opacity=" + opac + ")";
    setTimeout(arguments.callee, 100);
    }

    }, 5000); //5 秒後に 2秒掛けてフェードアウト
    }
    </script>
    <style>
    .KEEP_ALIVE_MESSAGE {
    position:absolute;
    left:0;
    top:0;
    width:150px;
    height:12px;
    color:red;
    background-color:snow;
    font-size:10px;
    font-weight:bolder;
    font-family:Arial Nallow;
    }
    </style>
    <div id="LEEP_ALIVE_MESSAGE">KEEP ALIVE</div>

    ## ぜんぜん役に立たないレスでした。

記事No.5878 のレス /過去ログ16より / 関連記事表示
削除チェック/

■5888  Re[2]: ASP.NET セッション ハートビート
□投稿者/ たろ -(2007/07/25(Wed) 13:06:44)
    No5886 (魔界の仮面弁士 さん) に返信
    > ■No5878 (たろ さん) に返信
    >>しかし、これだとjavascriptのalertを表示し続けるとハートビートできずにセッションタイムアウトを起こしてしまいます。
    >
    > alert を使わないよう修正するとか。。。

    ご返答ありがとうございます。

    alertやconfirmはいたるところに使用しているので、
    その修正も最終手段と考えております。

    やっぱり、別ウィンドウでハートビートを行う方法しかないですかね?
    その場合、見た目は別ウィンドウを開いているのがわからないようにする事とかできるんでしょうか?
記事No.5878 のレス /過去ログ16より / 関連記事表示
削除チェック/

■5889  Re[3]: ASP.NET セッション ハートビート
□投稿者/ 黒龍 -(2007/07/25(Wed) 13:13:20)
    わからないようには出来ないと思います。ハートビートも接続台数によりますがサーバから見るとDOSに近いものがありますので避けたほうが賢明ですが既にハートビートをやる方向で修正をあまりいれずとなると別Windowが現実的かもしれませんね。
記事No.5878 のレス /過去ログ16より / 関連記事表示
削除チェック/

■5891  Re[4]: ASP.NET セッション ハートビート
□投稿者/ たろ -(2007/07/25(Wed) 13:43:17)
    No5889 (黒龍 さん) に返信
    > わからないようには出来ないと思います。ハートビートも接続台数によりますがサーバから見るとDOSに近いものがありますので避けたほうが賢明ですが既にハートビートをやる方向で修正をあまりいれずとなると別Windowが現実的かもしれませんね。


    ご返答ありがとうございます。

    出来ないですよねぇ・・・。

    やっぱり別ウィンドウしかないですかねぇ〜。。
記事No.5878 のレス /過去ログ16より / 関連記事表示
削除チェック/

■5892  Re[2]: ASP.NET セッション ハートビート
□投稿者/ たろ -(2007/07/25(Wed) 13:46:51)
    ご返答ありがとうございます。


    No5890 (mあ さん) に返信
    > 2007/07/25(Wed) 13:30:04 編集(投稿者)
    > 2007/07/25(Wed) 13:28:57 編集(投稿者)
    > 2007/07/25(Wed) 13:25:11 編集(投稿者)
    >
    > ■No5878 (たろ さん) に返信
    >>【ソース例】
    > (Snip)
    >>こんな感じです。
    >>
    >>しかし、これだとjavascriptのalertを表示し続けるとハートビートできずにセッションタイムアウトを起こしてしまいます。
    >>何かセッションをキープする方法はありますでしょうか?
    >
    > alert() を表示するとユーザーアクションが無いとバックグランド作業がとまってしまうからですよね。
    >

    その通りです。


    > # 訂正(1)
    > # なるほど、alert() を一杯いろんなとこで使っているのですか。
    > # ふーむ。。。IE オンリーなら、showModelessDialog で alert メッセージダイアログや
    > # confirm を上書きしてしまうのはどーですかね?
    >
    > # 試してないので自身ないですが、
    > # window.alert = function(msgNo) {
    > # showModelessDialog("alert.html?msgNo="+ msgNo);
    > # }
    > #
    > # とか出来るかもしれませんね。モーダルではないので、親画面と並列動作できます。
    > #
    > # 訂正(2)
    > #<script>
    > #window.alert = function() {
    > # alert(" あらーとの上書き ");
    > #}
    > #window.confirm = function() {
    > #
    > # alert(" こんふぁーむのうわがき ");
    > #
    > #}
    > #confirm("ok");
    > #</script>
    > #
    > # 標準実装のメソッドはさすがに無理でした・・・
    > #

    既に、お客様先で稼動しているシステムなので、メッセージボックス等の見た目はあまり変えられないのです。
    showModelessDialogを使用するとしたら、これも最終手段と考えております。


    >
    > 以下動く保証なしですm(__)m
    > <iframe id="frame1" width=0 height=0></iframe>
    > <script>
    > //30 秒毎にセッション継続ライフビートを送信、受け取ったら忍者ツールみたいに画面隅っこ
    > //にぼんやり表示(表示は5秒後にフェードアウト)。
    > var saID = null;
    > (function() {
    > saID = setTimeout(function() {
    > var o = document.getElementById("frame1");
    > o.onreadystatechange = function() {
    > if (this.readyState == 4) {
    > showKeepAlive();
    > }
    > }
    > o.src = "KeepSessionForm.aspx";
    > }, 30000 );
    > })();
    > function showKeepAlive() {
    > var o = document.getElementById("KEEP_ALIVE_MESSAGE");
    > o.style.visibility = "visible";
    > o.style.filter = "alpha(opacity=100)";
    > var opac = 100;
    > setTimeout(function() {
    > opac -= 5;
    > if (opac > 0) {
    > o.style.filter = "alpha(opacity=" + opac + ")";
    > setTimeout(arguments.callee, 100);
    > }
    >
    > }, 5000); //5 秒後に 2秒掛けてフェードアウト
    > }
    > </script>
    > <style>
    > .KEEP_ALIVE_MESSAGE {
    > position:absolute;
    > left:0;
    > top:0;
    > width:150px;
    > height:12px;
    > color:red;
    > background-color:snow;
    > font-size:10px;
    > font-weight:bolder;
    > font-family:Arial Nallow;
    > }
    > </style>
    > <div id="LEEP_ALIVE_MESSAGE">KEEP ALIVE</div>
    >
    > ## ぜんぜん役に立たないレスでした。
    >

    いいえ。そんなことないですよ。
    色々考えていただきありがとうございました!

    >
記事No.5878 のレス /過去ログ16より / 関連記事表示
削除チェック/

■5896  Re[3]: ASP.NET セッション ハートビート
□投稿者/ mあ -(2007/07/25(Wed) 14:40:39)
    別画面ですが、利点は、
     (1)タスクバーに出ないこと
     (2)親画面の制御(リロード)で勝手に閉じること
    です。
    
    [test01.html]
    <html>
    <script>
    var win =showModelessDialog("test02.html",window,
       "dialogWidth:200px;dialogHeight:100px;");
    
    window.onload = function() {
    	win.moveTo(-100,-100);
    }
    </script>
    <body bgcolor=snow>
    ああああ<input type=button value="alert" onclick="alert('ok')">
    いいいい<input type=button value="alert" onclick="confirm('ok?')">
    <input type=text id="text1">
    </body>
    
    </html>
    
    [test02.html]
    <html>
    <script>
    function documentLoad() {
    
    	setTimeout(function() {
    		var pWin = dialogArguments;
    		pWin.document.getElementById("text1").value = 
    			(new Date()).getTime();
    		setTimeout(arguments.callee, 1000);
    	}, 1000);
    
    }
    
    window.onload = documentLoad;
    </script>
    <body bgcolor=snow>
    <input type=text id="text1">
    </body>
    
    </html>
    
    
    これでいいんじゃないすかね?コピペでお試しください。
    ただ、showModelessDialog 内ではフォームポスト出来たよーな出来ないよーな
    記憶が定かではありません。出来ないときは、Ajax で。出来るとしても条件あ
    るでしょうから、念のために ダイアログ内で IFRAME を使うと良いかもしれま
    せんね。
    
    
    
記事No.5878 のレス /過去ログ16より / 関連記事表示
削除チェック/

■5897  Re[4]: ASP.NET セッション ハートビート
□投稿者/ たろ -(2007/07/25(Wed) 15:14:28)
    No5896 (mあ さん) に返信
    >
    > 別画面ですが、利点は、
    >  (1)タスクバーに出ないこと
    >  (2)親画面の制御(リロード)で勝手に閉じること
    > です。
    >
    > [test01.html]
    > <html>
    > <script>
    > var win =showModelessDialog("test02.html",window,
    >    "dialogWidth:200px;dialogHeight:100px;");
    >
    > window.onload = function() {
    > win.moveTo(-100,-100);
    > }
    > </script>
    > <body bgcolor=snow>
    > ああああ<input type=button value="alert" onclick="alert('ok')">
    > いいいい<input type=button value="alert" onclick="confirm('ok?')">
    > <input type=text id="text1">
    > </body>
    >
    > </html>
    >
    > [test02.html]
    > <html>
    > <script>
    > function documentLoad() {
    >
    > setTimeout(function() {
    > var pWin = dialogArguments;
    > pWin.document.getElementById("text1").value =
    > (new Date()).getTime();
    > setTimeout(arguments.callee, 1000);
    > }, 1000);
    >
    > }
    >
    > window.onload = documentLoad;
    > </script>
    > <body bgcolor=snow>
    > <input type=text id="text1">
    > </body>
    >
    > </html>
    >
    >
    > これでいいんじゃないすかね?コピペでお試しください。
    > ただ、showModelessDialog 内ではフォームポスト出来たよーな出来ないよーな
    > 記憶が定かではありません。出来ないときは、Ajax で。出来るとしても条件あ
    > るでしょうから、念のために ダイアログ内で IFRAME を使うと良いかもしれま
    > せんね。
    >
    >
    >

    ご回答ありがとうございます。


    これは、showModelessDialogを使用して別画面でセッションのハートビートを行うということですよね。
    別画面でOKが出ましたら、是非、参考にさせて頂きますね。

    やっぱり別画面しかないですよね・・・。
記事No.5878 のレス /過去ログ16より / 関連記事表示
削除チェック/

■5894  Re[3]: ASP.NET セッション ハートビート
□投稿者/ 中博俊 -(2007/07/25(Wed) 14:23:34)
>
    本番環境なんだから、セッションモードがInProcってことはあリえないでしょ?
    StateServerなら仕方ないとして、SQLServerなり、カスタムなりならセッションタイムアウト時間をのばすデメリットなんてほとんどないわけだから別にかまわないじゃないですか。
記事No.5878 のレス /過去ログ16より / 関連記事表示
削除チェック/

■5895  Re[4]: ASP.NET セッション ハートビート
□投稿者/ たろ -(2007/07/25(Wed) 14:37:19)
    No5894 (中博俊 さん) に返信
    > 本番環境なんだから、セッションモードがInProcってことはあリえないでしょ?
    > StateServerなら仕方ないとして、SQLServerなり、カスタムなりならセッションタイムアウト時間をのばすデメリットなんてほとんどないわけだから別にかまわないじゃないですか。

    ご返答ありがとうございます。

    そうなんですよ!
    システム的には問題ないんですよ。

    でも、お客様曰く、何日も登録中の画面を放置する人がいるらしいのです。
    なので、セッションタイムをどこまで設定すれば問題ないのか分かりかねるらしいです・・。
記事No.5878 のレス /過去ログ16より / 関連記事表示
削除チェック/

■5901  Re[5]: ASP.NET セッション ハートビート
□投稿者/ れい -(2007/07/25(Wed) 17:25:54)
    No5895 (たろ さん) に返信
    > ■No5894 (中博俊 さん) に返信
    >>本番環境なんだから、セッションモードがInProcってことはあリえないでしょ?
    >>StateServerなら仕方ないとして、SQLServerなり、カスタムなりならセッションタイムアウト時間をのばすデメリットなんてほとんどないわけだから別にかまわないじゃないですか。
    >
    > でも、お客様曰く、何日も登録中の画面を放置する人がいるらしいのです。
    > なので、セッションタイムをどこまで設定すれば問題ないのか分かりかねるらしいです・・。

    それは、ユーザーがダメなんですね。
    そもそも仕事は1日ごとに終わるので、
    出社時に開いて退社時に閉じるようにすることぐらいできませんか?
    MSとかIISのシステムのせいにしたり
    セキュリティが弱くなる、流出したら責任とってくれますかとか言って
    1日が限界ですとか言ってごまかしたりとか。

    って処世術掲示板じゃないやここ。

    まぁ実際のところ、
    ・サーバーの能力と負荷
    ・経路の安全性と扱う情報の重要度
    によっては1日でも2日でも1週間でも、問題ないことも多いと思いますが。

    1ヶ月だとアップデートがくるからやばいかな。
記事No.5878 のレス /過去ログ16より / 関連記事表示
削除チェック/

■5902  Re[6]: ASP.NET セッション ハートビート
□投稿者/ たろ -(2007/07/25(Wed) 17:41:58)

    ご回答ありがとうございます。

    No5901 (れい さん) に返信
    > ■No5895 (たろ さん) に返信
    >>■No5894 (中博俊 さん) に返信
    > >>本番環境なんだから、セッションモードがInProcってことはあリえないでしょ?
    > >>StateServerなら仕方ないとして、SQLServerなり、カスタムなりならセッションタイムアウト時間をのばすデメリットなんてほとんどないわけだから別にかまわないじゃないですか。
    >>
    >>でも、お客様曰く、何日も登録中の画面を放置する人がいるらしいのです。
    >>なので、セッションタイムをどこまで設定すれば問題ないのか分かりかねるらしいです・・。
    >
    > それは、ユーザーがダメなんですね。

    そうなんです!

    > そもそも仕事は1日ごとに終わるので、
    > 出社時に開いて退社時に閉じるようにすることぐらいできませんか?
    > MSとかIISのシステムのせいにしたり
    > セキュリティが弱くなる、流出したら責任とってくれますかとか言って
    > 1日が限界ですとか言ってごまかしたりとか。
    >
    > って処世術掲示板じゃないやここ。
    >

    直接、エンドユーザーに会えればいいんですが、
    取引先にサポートで参画しているので、
    会えないし、言えないんです・・(TへT)

    > まぁ実際のところ、
    > ・サーバーの能力と負荷
    > ・経路の安全性と扱う情報の重要度
    > によっては1日でも2日でも1週間でも、問題ないことも多いと思いますが。
    >
    > 1ヶ月だとアップデートがくるからやばいかな。
    >

    もう、最終的にはメッセージぐらい閉じろって言ってもらいます。。




記事No.5878 のレス /過去ログ16より / 関連記事表示
削除チェック/

■5903  Re[7]: ASP.NET セッション ハートビート
□投稿者/ れい -(2007/07/25(Wed) 18:15:04)
    No5902 (たろ さん) に返信
    > ■No5901 (れい さん) に返信
    >>■No5895 (たろ さん) に返信
    > >>■No5894 (中博俊 さん) に返信
    >>>>本番環境なんだから、セッションモードがInProcってことはあリえないでしょ?
    >>>>StateServerなら仕方ないとして、SQLServerなり、カスタムなりならセッションタイムアウト時間をのばすデメリットなんてほとんどないわけだから別にかまわないじゃないですか。
    > >>でも、お客様曰く、何日も登録中の画面を放置する人がいるらしいのです。
    > >>なので、セッションタイムをどこまで設定すれば問題ないのか分かりかねるらしいです・・。
    >>それは、ユーザーがダメなんですね。
    > そうなんです!

    できないものはできないし、
    できたとしてもシステムとして無理がある場合、後々尾を引きます。
    つぎはぎだらけのアプリは見たくありません。

    そのダメなユーザーになんとか納得してもらうのも
    技術者の務めではないですかね?
    直接会えなくても、なんとかする方法はないですかね?

    タイムアウトまでの時間を表示するとか、
    早く入力できるように変更するとか、
    登録中の画面を放置したくなくなるような仕掛けを用意するとか。
記事No.5878 のレス /過去ログ16より / 関連記事表示
削除チェック/

■5904  Re[8]: ASP.NET セッション ハートビート
□投稿者/ Jitta -(2007/07/25(Wed) 18:46:10)
    サポートの元請けに掛け合って納得させる。エンドユーザーを納得させるのは元請けの仕事でしょう。
    これが今できるベストかと。
記事No.5878 のレス /過去ログ16より / 関連記事表示
削除チェック/

次の20件>

<< 0 | 1 >>

パスワード/

- Child Tree -