0

私は、1 台の PC で Windows IIS サーバーを使用してホストされるブラウザー ベースの POS アプリケーションを作成するタスクを与えられました。他のいくつかの PC やタブレットは、それらがすべて同じネットワークに接続されているときに、アプリケーションをホストしている PC の IP をブラウザーに入力することで、アプリケーションの機能にアクセスします。アプリケーションは ASPX ページの背後にあるコードとして C# を使用して ASP.NET でプログラムされます。
私の質問は次のとおりです。var x = Application["testVariable"];変数を格納するために HttpApplicationState ( ) を使用する場合、それらはサイトに接続する各デバイスに対してローカルになりますか、それともすべてのデバイスからアクセス可能で上書き可能になりますか?

例:
iPad が接続し、ユーザー A としてログインします。変数Application["userName"]を stringに設定します"Nathangrad"。次に、PC が接続し、ユーザー B としてログインします。同じ変数を"OtherUser". 今、私が iPad を使って を呼び出すとApplication["userName"]、 または になります"Nathangrad""OtherUser"?

4

2 に答える 2

1

HttpApplicationStateはグローバルなものであり、アプリケーションのすべてのユーザーが利用できます。MSDN から:

ASP.NET アプリケーション内の複数のセッションと要求でグローバル情報を共有できるようにします。

アプリケーション状態の一般的な使用例は、まったくまたはほとんど変更されず、ユーザーにまったく依存しないものを保存することです。

実際には値を上書きする必要があるが、それでもアプリケーション全体でグローバルに使用できるようにしたい場合System.Runtime.Caching.MemoryCacheは、アプリケーションの状態の代わりにキャッシュを使用することを検討してください。

ユーザー固有のデータを保存するには、次の 2 つのオプションがあります。

  1. セッション。繰り返しますが、MSDN から:

ASP.NET セッション状態は、限られた時間枠での同じブラウザーからの要求をセッションとして識別し、そのセッションの間、変数値を永続化する方法を提供します。

ユーザーが Web サイトの使用を終了するとすぐにセッションが終了し、保存されていたものはすべて使用できなくなることに注意してください。

  1. データベースの永続性。ユーザーを識別できる場合は、必要なユーザー固有のデータをデータベースに保存できます。このアプローチは、認証されたユーザーに対してのみ有効です。
于 2016-02-05T11:13:07.500 に答える
1

MSDN で HttpApplicationStateクラスをすばやく検索すると、次のように表示されます。

「ASP.NET アプリケーション内の複数のセッションと要求でグローバルな情報を共有できるようにします。」

「HttpApplicationState クラスの単一インスタンスは、クライアントが特定の ASP.NET アプリケーション仮想ディレクトリ内から URL リソースを初めて要求したときに作成されます。Web サーバー上の ASP.NET アプリケーションごとに個別の単一インスタンスが作成されます。への参照各インスタンスは、固有の Application オブジェクトを介して公開されます。」

于 2016-02-05T11:12:51.480 に答える