問題タブ [httpapplicationstate]

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.

0 投票する
2 に答える
1738 参照

asp.net - 複数のユーザーがHttpApplicationインスタンスを共有できますか?

この記事の上部にある表を参照として使用しました。私は3つの質問があります:

1-(異なる物理的な場所からの)複数のユーザーがHttpApplicationインスタンスを共有することはできますか?もしそうなら、これはデフォルトで起こりますか?

2-複数のユーザー(異なる物理的な場所から)がHttpApplicationStateインスタンスを共有することはできますか?もしそうなら、これはデフォルトで起こりますか?

3-ASP.NETアプリケーションの複数のユーザーがシングルトンインスタンスまたは静的変数値を共有することはできますか?もしそうなら、これはデフォルトで起こりますか?

これを片付けてくれてありがとう。

0 投票する
2 に答える
2023 参照

c# - MoqでHttpApplicationStateをモックするときにオブジェクトを設定できないようです

フィルタコンテキストのHttpContextのHttpApplicationStateにオブジェクトを設定しているアクションフィルタがあります。単体テストでこの機能を使用したいのですが、何らかの理由で、HttpApplicationStateの派生元である基になるNameObjectCollectionBaseにオブジェクトが設定されていません。

MVCアプリケーションを実行すると期待どおりに機能するため、機能が機能することはわかっています。

オブジェクトをアプリケーション状態に設定するためにテストを設定するにはどうすればよいですか?私はMoqを使用していますが、これまでのコードの一部を次に示します。それは失敗します

これがコードです。

これがこれまでのテストです。

0 投票する
2 に答える
2145 参照

static - c# .net メモリ内永続性

サーバーから返されるすべてのリクエストで「ユーザー メッセージ」を利用できるようにしたいと考えています。ユーザー メッセージがない場合、メッセージは空白に戻ります。アイコンがある場合、リクエストが完了すると、各ユーザー画面でアイコンがアクティブになります。

[編集] 「ユーザー メッセージ」は、私が展開しているアプリケーションの管理者によって設定されているものです。管理者は、フィールドにテキストを入力し、ボタンをクリックして、このメッセージをシステムの他のすべてのユーザーに送信できます。別のユーザーが何らかのアクションを実行するたびに、現在のユーザー メッセージが JSON 応答に添付され、フロントエンドによって処理されます。

これを最適化するために、メッセージを(データベースではなく)メモリに保存する必要があります。

私は静的を使用しようとしました。HttpApplicationState を使用しようとしました。どちらの場合も、ユーザー メッセージの値は一定期間後に「空白」になります。いくつかの調査の結果、静的と HttpApplicationState の両方がIISの影響を受け、いつアプリケーション プールをリサイクルするかが決定されるようです。(またはそのようなもの)

この静的変数の揮発性は神秘的です。これは静的である必要があります。IIS自体が存続している限り、この変数も存続するはずです。ある種の「リセット」などに依存するべきではありません。HttpApplicationState は、私が完全に理解していない他の状況です。

信頼できる不揮発性変数に値を格納する方法が必要です。この値を今日設定した場合、 IISを停止して再起動しない限り、明日または来週には設定されているはずです。

何か助けはありますか?


以下の受け入れられた回答に従って、問題を解決するために私が行ったことは次のとおりです。

  1. ユーザーメッセージはいつかのものです。そのため、メッセージが管理者によって設定されると、その時点で応答をデータベースに保存し、それを Application["UserMessage"] オブジェクトに保存します。
  2. ユーザーからのラウンドトリップが発生すると、ユーザー メッセージのメモリ内テキストが json の戻り値に追加されます。
  3. 管理者はいつでもメッセージをクリアできます。これにより、メモリ内メッセージとデータベース フィールドの両方がクリアされます。
  4. IIS が十分であると判断し、アプリケーションをリサイクルすると、Application_Start() メソッドは (他のタスクの中で) ユーザー メッセージが設定されたときに格納されたデータベース値からユーザー メッセージを再シードします (手順 1 に従って)。

これで、アプリケーションは期待どおりに動作します。システムへのユーザー要求ごとにデータベースに追加料金が支払われることはありません。ユーザー メッセージは常にメモリから取得されます。これに加えて、ユーザー メッセージのデータベースが更新またはロードされる回数はごくわずかです。

0 投票する
2 に答える
2303 参照

asp.net - HttpContext.Current.ApplicationInstance.ApplicationとHttpContext.Current.Application

ページやセッション間で共有するオブジェクトを保存したい場合は、どれを使用すればよいですか?

HttpContext.Current.ApplicationInstance.ApplicationまたはHttpContext.Current.Application

私は使ってHttpContext.Current.Applicationいましたが、2つの間で混乱しました。

0 投票する
2 に答える
354 参照

asp.net - HttpApplicationState.RemoveAll()スレッドは安全ですか?

私のasp.netアプリケーションでは、いくつかのデータをにキャッシュしたいと思いますHttpApplicationState

データを設定するための私のコードは次のようになります。

ドキュメントを読むと、それHttpApplicationStateは暗黙的にスレッドセーフであると書かれています。しかし、多くのブログでは、にデータを書き込むときに使用する必要があるApplication.Lock()と書かれています。Application.Unlock()HttpApplicationState

一方、メソッドからデータを読み取るとき、HttpApplicationStateまたはメソッドをクリアするとき(を使用してApplication.RemoveAll())にロックを使用する必要があるというドキュメントは見つかりませんでした。

私の質問は次のとおりです。

  1. 電話をかけるときは、スレッドセーフに注意を払うべきではありませんRemoveAllか?私のアプリケーションでは、1つのスレッドがからデータを読み取っているのHttpApplicationStateに対し、他のスレッドはを呼び出す可能性がありますRemoveAll
  2. この場合、HttpApplicationState2つの異なるスレッドから同時に読み取りとクリアが可能な場合、読み取りもスレッドセーフではないでしょうか。
0 投票する
2 に答える
633 参照

c# - IIS を使用した HttpApplicationState

私は、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"?