問題タブ [session-state]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - コードの再利用性 - App_Code または BIN または UserControls?
最近、別の開発者と別のフォーラムでディスカッションを行いましたが、トピックは ASP.NET でのコードの再利用でした。述べられたシナリオは、サーバーのアップタイム中に運用サーバーでコードを頻繁に更新する必要があり、その結果、すべてのユーザーのセッションがリセットされるというものでした。彼は、共有コードまたはクラスを App_Code フォルダーに配置したり、プリコンパイル済み DLL を Bin フォルダーに配置したりすることを避けています。これは、更新によってセッションも更新されるためです。
彼が思いついた解決策は、共有コードを UserControls に配置し、必要に応じてそれらを参照することです。これにより、セッションの再起動を強制することなく、次の要求で動的に再コンパイルされる UserControl ファイルのみを更新できます。Usercontrols は UI を持つことを意図していないことに注意してください。おそらく、いくつかのビジネス ロジックを格納するだけです。
本質的に間違っていると感じたので、彼を説得しようとしましたが、これが非常に悪いやり方であるという私の主張を裏付ける確固たる事実を提供することはできませんでした. 私が考えることができる唯一のことは、UI からビジネス ロジックを分離するという原則に違反していることです。私はひどく間違っていますか、それともこれを行うべきではない具体的な理由がありますか? リンクや例は役に立ちます。
注:プロセス外のセッション状態を使用することは、現時点ではオプションではなく、スケジュールされたダウンタイムを決定することもできませんでした。また、これは活発に開発中のサイトであるため、まだ専門的な展開モデルを使用していないようです。
前もって感謝します。
編集:さらに、上記のケースでセッションが再起動する理由を誰かが正確に明確にできると助かります。
session - 複数のブラウザ ウィンドウが同じセッションを共有している場合、ユーザー状態を最適に処理するにはどうすればよいですか?
同僚がさまざまな会社の展示会への訪問者を登録できるようにする Web アプリケーション (Java、Websphere、JSP) があります。ユーザーオブジェクトは、現在選択されている展示会を記録するセッションに保存され、これは新しい訪問者の詳細を入力するときに使用されます。
1 人のユーザーが、同じセッションを共有しているように見える 2 番目のブラウザー ウィンドウを開くことを決定しました。ユーザーは、2 番目のウィンドウで別の展示を閲覧します。これにより、現在選択されている展示の状態が変更されます。最初のウィンドウに戻り、メニュー項目「訪問者のリスト」をクリックします。結果のリストは、2 番目のウィンドウで選択された展示会への訪問者のリストです。
すべてのページのすべてのフォームに展示会 ID を追加できることはわかっていますが、実際のシナリオは説明したシナリオよりも複雑です。
この種の問題に対処するためのあなたの戦略は何ですか?
asp.net - ASP.Net State Service の問題
セッションを保存するために ASP.Net State サービスを使用している Web ファームで実行されている ASP.Net 2.0 Web アプリケーションがあります。
サービスで断続的に問題が発生しており、machine.config の machineKey など、いくつかの変更を行いました。
私の実際の質問は、国家サービス サービスの監視に関するものです。サービスをホストするサーバー上で 4 つの使用可能なパフォーマンス カウンターがすべて実行されていますが、まだセッション タイムアウトは 1 回も発生していません。また、アクティブなセッションの数が一定期間にわたってゆっくりと増加していることも確認していますが、減少することはありません.
状態サービスは、セッションがタイムアウトしたことを認識しますか? 手動で行うべきことはありますか?
編集:状態サービスをあきらめて、SQL サーバー セッションを使用しました。
以下の質問に答えると、サービスが停止するまでセッションは永遠に続くようであり、oen スレッドが状態サーバーにリンクされているかどうかは非常に疑わしいです。結局のところ、これはかなり基本的な Web アプリです。
私が行っている読書から、他の多くの人々が同様のことを経験しているように見えますが、飛び交う回答には一般的な常識と知識の欠如があるようです.
MS には、このトピックに関するドキュメントがほとんどないようです。
asp.net - SQL セッション タイムアウトの推奨事項
私のアプリケーションの 1 つは SQL セッション状態を使用しており、タイムアウトは現在 20 分に設定されています。私の質問は、これはサーバー メモリではなくデータベースに格納されるため、重大なパフォーマンスの問題なしにタイムアウトを増やすことができるはずです。
データベースは多くのセッションを簡単に処理できるはずなので、データベース セッション状態のシナリオでのタイムアウトの重要性がよくわかりません。
asp.net - 2 台のマシンで同時に ASP.NET セッション ID を同じにすることはできますか?
Session.SessionID を使用して複数のユーザーが同じデータを同時に表示しないようにする ASP.NET アプリケーションがあります。
処理が必要な一連の画像 (BLOB に格納) を含むテーブルがあります。同じ画像を同時に表示できるのは 1 人のユーザーのみです。これを実現するために、各レコードがユーザーによって取得されると、レコードは Session.SessionID で更新されます。この更新は、ReaderWriterLock 内で行われます。
ReaderWriterLock が正しく機能していることを確認するテストを行い、そのブロック内のコードを一度に実行できるセッションは 1 つだけであることを確認しました。
私の現在の理論では、2 人の異なるユーザーが同時に同じ SessionID を取得しているというものです。このアプリケーションのユーザーは、ロックしたレコードまたはロック解除された画像を表示できます。
すべてのページのフッターに SessionID を表示するようにアプリケーションを修正し、問題が再発した場合に SessionID の値を確認できるようにしました。
SessionID が一意ではないことを示唆する記事や、SessionID が一意であると述べている記事をオンラインで見たことがあります。SessionID が永久に一意ではないことは理解していますが、SessionID の値はアクティブなセッションに対して一意であると見なすことができますか?
また、Guid を Session オブジェクトに格納し、Session ID の代わりに一意の ID として使用する必要があるという提案も読みました。
これまでの回答に感謝します。これまでの回答に基づく説明は次のとおりです。
「永遠にロック」 - 5 分間のロック タイムアウトでこれを防ぎます。ユーザーが画像をロックする前に、ReaderWriterLock 内で、古いロックの「クリーンアップ」(5 分以上ロックされた画像のロックを解除します)、最も古いロック解除された画像を取得するためのクエリ、およびそれを「ロック」する更新ステートメントを実行します。現在のセッションへのイメージ。
この問題の考えられる原因は、1 人のユーザーがイメージを「ロック」した後、短い休憩のために PC から離れた場合です。彼らが 5 分間何もしなかった場合、画面上のその画像のロックが解除され、別のユーザーによって開かれる可能性があります。問題が報告されたときにこのシナリオについて言及し、ユーザーが継続的に作業していることを確信しました.
「別のウィンドウ/タブ」 - 私は実際にエラーを自分の目で見たことはありませんが、問題を報告した人は、2 つの異なる PC とログイン ユーザーの 2 つの異なるユーザー名であると私に言いました。
ページにセッション ID を表示していることを願っています。次にそれが発生したときに、それが 2 台のマシンで同じセッション ID なのか、それとも他の問題なのかを確実に判断できるようになることを願っています。この問題は、テスト段階では発生していないため、多数の同時ユーザーの症状であると思われます。
これまでの回答に感謝します。詳細がわかり次第、この質問を更新します。
ユーザーは私に全容を教えてくれなかったようです。セッションIDは、受け入れられた回答に従って、私たちの場合は一意です。ユーザー 1 が 5 分間の「放棄された画像」のロック解除プロセスでアイドル状態だったため、2 人のユーザーが同時に同じ画像を見ることができました。この問題を回避するために、「放棄されたイメージ」タイムアウトがセッション タイムアウトと一致するように引き上げられました。
c# - ワークステーションのロック/ロック解除の変更をC#で確認する
重複: ワークステーションがロックされているかどうかをプログラムで判断するにはどうすればよいですか?
Windowsユーザーが画面をロックし(Windows + L)、再度ロックを解除したことを(実行時に)検出するにはどうすればよいですか。キーボード入力をグローバルに追跡できることは知っていますが、環境変数を使用してそのようなことを確認することは可能ですか?
.net - 2 つの .net アプリケーション間で「セッション状態」タイプのデータを共有する最良の方法
小さなものから始めたWebアプリケーションがあり、追加された新機能はすべて同じプロジェクトの一部として作成されましたが、これらのアドオン用の新しいプロジェクトを作成したいと思います...
新しいプロジェクトを作成し、メイン プロジェクトの global.asax を継承し、メイン プロジェクトの web.config にも問題なくアクセスしますが、グローバル asax コードでは、データの整合性をチェックするセッションがあり、ユーザーがログインしています..ここで問題が発生しています..ユーザーはログインしていますが、メインプロジェクトによって設定されたセッションユーザー ID にアドオンプロジェクトがアクセスできないため、ユーザーがログインしていないことを示すサイトエラーが発生します。
現在、セッション状態サーバーまたは SQL 状態サーバーを使用していません。一部の古いコードの頭痛の種を避けるために、使用を避けたいと考えています。
また、ミューテックスのルートに行きたくありません..可能であれば、Windowsコーディングからも離れたいです...
セッションで何が起こるかのサイトの概要: ユーザーが asp コード (.net 1.1 コード) でログイン ユーザーが認証され、正常にログインし、そのユーザーの GUID をデータベースに送信し、メイン プロジェクト (.net 2.0 コード) がそれを取得しますguid は、ユーザー データを取得し、ユーザー ID をセッションに保存します。ユーザーが誰であるかを知る必要があるページは、セッションから取得します("userid")
そのため、global.asax を継承する別のプロジェクトを作成し、web.config にアクセスできます - 完了!
これに加えてやりたいこと: この新しいプロジェクトにページ (メイン プロジェクトのアドオン機能) を含め、このページにメイン プロジェクトから設定されたセッション ("userid") にアクセスさせます。- これを行う方法がわからない...
asp.net - SessionIDにアクセスした場合、ASP.Net Inprocセッションタイムアウトはリセットされますか?
ここで、inproc asp.netセッションがアクセス(読み取りまたは書き込み)されるたびにタイムアウトをリセットすることを読みました。私の質問は、sessionIDのみを読み取った場合にタイムアウトもリセットされるかどうかです。
例:セッションタイムアウトは20分に設定されています。15分後。非アクティブの場合、ページをロードしてSession.SessionIDを読み取ります。セッションはさらに10分後も存在しますか?
そしてもう1つの質問:ページが直接ロードされるか、AJAX経由でアクセスするかは重要ですか?
.net - .netHttpCookieクラス/セッションCookieの質問
HttpCookie
通常のオブジェクトをセッションの終了時に期限切れになるCookieにする方法に興味があります。私は誰かに興味がありませんshowing me HttpContext.Session
。通常のCookieと比較して、セッションCookieは応答ヘッダーでどのように表示されますか?HttpCookie
セッションの終了時に期限切れになるようにを変更するにはどうすればよいですか?ありがとう!