12

静的クラスとメソッドのスコープがASP.NETユーザーセッションのスコープとどのように相互作用するかを説明する記事を説明したり、指摘したりするのに十分親切でしょうか.

これが私の質問を説明するより具体的な状況です:

  1. ユーザー A が asp.net Web サイトにログインします。
  2. 何かをしている間、ユーザー A はいくつかのデータを初期化する静的メソッドを使用します。
  3. ユーザー B が同じ asp.net Web サイトにログインします。
  4. ユーザー B は同じ静的メソッドをヒットします。

ユーザー B がヒットすると、データは既に初期化されていますか?

また、ユーザー B が Web サイトにアクセスする前に、ユーザー A の asp.net セッションが期限切れになった場合はどうなるでしょうか。

4

2 に答える 2

15

静的データは、プロセスが実行されている限り存続します。型に付いています。

初期化されるデータが静的コンテキストにある場合、ユーザー B がメソッドをヒットすると、既に初期化されています。

ここではセッションは関係ありません。プロセスのみです。

プロセスがリサイクルされた場合、データを再初期化する必要があります。

于 2012-09-28T14:40:07.197 に答える
5

これらの投稿を確認してください:ASP.Net静的関数のユーザーセッション間の「コンテキスト」クロスオーバーがなぜですか?

静的クラスのスコープは何ですか?

C#静的変数-スコープと永続性

http://msdn.microsoft.com/en-us/library/ms173138(v=vs.100).aspx

要するに:

ユーザーBがデータをヒットすると、データはすでに初期化されていますか?

はい

また、ユーザーBがWebサイトにアクセスする前に、ユーザーAのasp.netセッションが期限切れになった場合はどうなりますか?

ユーザーBは、ユーザーAによって初期化されたデータにアクセスします

静的データは、Webアプリケーションのアプリケーションドメイン全体で共有されます。これは、Webアプリ内のリクエストを処理するすべてのスレッド間で共有され、セッション/スレッド/ユーザーにバインドされるのではなく、Webアプリ全体にバインドされます。

于 2012-09-28T14:53:24.770 に答える