1

次のような OperationHelper クラスがあります。

public class OperationHelper
    {
        /// <summary>
        /// Gets or sets the Add Operation value
        /// </summary>
        public static bool AddOperation { get; set; }

        /// <summary>
        /// Gets or sets the Edit Operation value
        /// </summary>
        public static bool EditOperation { get; set; }

        /// <summary>
        /// Gets or sets the Delete Operation value
        /// </summary>
        public static bool DeleteOperation { get; set; }

        /// <summary>
        /// Gets or sets the Select Operation value
        /// </summary>
        public static bool SelectOperation { get; set; }
    }

要求ごとに、この値が再割り当てされます。これをローカルで実行すると、正しく動作します。しかし、コードを公開すると、一部の値が割り当てられないか、機能するはずの値が機能しません。

Asp.Net での static 変数の動作を C# で知りたいです。

静的変数は、すべてのユーザーがアクセスできるグローバル変数と同じですか? ユーザーAがtrueに設定した場合、ユーザーBはその値をTrueとして取得するか、変数のインスタンスが異なります。

4

4 に答える 4

2

Asp.Net での static 変数の動作を C# で知りたいです。

静的変数は、すべてのユーザーがアクセスできるグローバル変数と同じですか? ユーザーAがtrueに設定した場合、ユーザーBはその値をTrueとして取得するか、変数のインスタンスが異なります。

プールの 1 つの作業プロセスでサイトを実行している場合にのみ、このような動作になります。

プールに複数の作業プロセスがある場合、各プロセスには静的な値があり、各リクエスト、各ユーザーにどのプロセスが与えられるかはわかりません。一緒に処理すると、それらは通信しません。

4つの作業プロセスを持つプールがあるとしましょう。

UserA がページを要求し、Process 1 が再生され、静的値が A に設定されます
。UserB がページを要求し、Process 1 が再生され、静的値は A です
。UserA がページを要求し、Process 2 が再生され、静的値は設定されていません。

等々。件名の詳細: ASP.NET 静的変数の有効期間asp.net
aspx ページに格納されている静的
変数非グローバル

于 2013-04-13T10:03:11.697 に答える
1

静的変数は一度だけ作成されます。userBあなたの質問に答えるために変数の同じインスタンスを取得します。

詳細については、こちらで説明しています。

于 2013-04-13T09:37:34.693 に答える