3

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

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

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

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

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

4

2 に答える 2

6

あなたの6つの質問すべてに対する答えはイエスです。

ユーザーごとの状態をセッションに保存する必要があります。

于 2011-03-06T17:20:54.337 に答える
2

HttpApplicationには、w3svc.exeインスタンスごとのAsp.Netアプリケーションの状態が含まれています。したがって、アプリケーション内のWebサーバーごとに、アプリケーションの状態が保存されます。Webガーデニングを使用している場合は、HttpApplicationオブジェクトに他の懸念事項があります。

同じサーバー、同じスレッドのすべてのユーザーは、HttpApplication、HttpApplicationState、およびすべての静的変数値を共有します。サーバー上で複数のHttpApplicationインスタンスが実行されている場合、同時ユーザーはこれらのオブジェクトの同じインスタンスにアクセスしません。これらのオブジェクトに値を格納することはお勧めしません...サーバー上のユーザー間で共有する値を格納するためにCacheオブジェクトを使用することをお勧めします。

キャッシュオブジェクト

Cacheオブジェクトは、依存関係と有効期限の値を取ることができます...これにより、サーバーに保存している値の「鮮度」を制御できます。

ユーザーごとの値は、Sessionオブジェクトに格納する必要があります。

セッションオブジェクト

于 2011-03-06T17:24:01.450 に答える