2012-05-10 9 views
1

インターネットまたはイントラネットのWebアプリケーションへの同時アクセスを制限したい。Asp.Netアプリケーションへの同時アクセスを制限する

ある一定の数の同時アクセスを許可したいとします。同じユーザー名を使用して最大20の同時アクセスを許可したいとします。

ログイン時にセッションを作成してカウンタをインクリメントしてDBに保存することは想像できますが、DBからデータを削除する方法はなく、ユーザーがログオフした場合にカウンタを減らす方法はありませんブラウザ。

あなたの意見では、どのような方法が良いですか?

おかげで、

+0

ログアウト中にデクリメント機能を呼び出すことができます。私はこのプロジェクトにSqlState Serverを使用することをお勧めします –

+0

少しOTですが、本当に正しい問題を解決していますか?あなたのサーバーに起因するものではなく、バックエンドを実行する一部のビジネスサービスによって制限されているような20人のユーザーしか聞こえません。あなたのソリューションは本当にこのビジネスサーバーを常に必要としていますか、それとも必要な場所に限度を修正できますか? – LosManos

答えて

0

セッションに「最後にアクティブな」フィールドを使用することをお勧めします。誰かがログインを試みたり、セッションを作成しようとすると、ある期間(たとえば15分)にアクティブだったすべてのセッションを照会し、その結果のカウントを使用して、アクティブなセッションの数を知ることができます。

1

あなたは、ユーザーがちょうど彼のブラウザを殺すか、コードを引くかどうかを知ることができないという点で正しいです。

30秒ごとにAjaxコールを実行するタイマーを作成してログに記録します。ユーザーがこのログに60秒間いない場合、サーバーにスローインします。
これは、誰かが夜間にブラウザを開いたままにしたり、スロットを突っ込んだりするのを止めることはありません。

another answerには、「最後のアクティブ」フィールドが記載されています。これは、一方で誰かがブラウザを開いたままにしてタイムアウトの制限値(分)を超えて何かを見る必要があるときに、これを駄目にします。

ユーザー/タイムアウト制限のため誰かが捨てられた場合。もう一度スロットが開いていれば自動的に再び完全にログインするようにしてもいいと思う。

私はこの解決策が他の問題を生み出すと考えています。

編集済み:
私はコメントしました - 20人のユーザー - あなたは本当に正しい問題を解決していますか?

+0

私が持っているWebアプリケーションは、同時に何千人ものユーザーをサーバーすることができます。したがって、中小企業にとっては少し高価なので、アクセスごとに値段を付けて、中小企業の役に立つようにしたいと思います。したがって、この数は固定ではなく、顧客によって異なります。ご注意ください、顧客のほとんどは、彼らのニーズに応えるために異なるURLを持っています –

関連する問題