3

Application オブジェクトにアクセスする初心者向けの例を見つけるのに苦労しました。AppRecycle までの約 2 時間、永続データとして保持するために、アプリケーション オブジェクトに保存したいもの (配列) はほとんどありません。

とにかく、次のように Application Object 変数を設定する方法を知っています。

// One way
String[] users = new String[1000];
Application["users"] = users;

// Another way
Application.Add("users", users);

ただし、これらの変数がアプリケーション オブジェクト内に入ると、これらの変数にアクセスする方法がわかりません。Getter メソッドがありGetます。ただし、 が必要int indexです。もう 1 つのメソッドContentsget は、配列だけでなくすべてを取得します。

ここで String[] 配列を取得しようとしましたが、Object を String に変換しようとしているというエラーが表示されます。

String[] usersTable = Application["users"];
// Since this is an object i also tried Application.users but gives error
4

4 に答える 4

4

アプリケーションでは、タイプ「オブジェクト」のみを保存します。目的のタイプにキャストする必要があります

string[] usersTable = (string[])Application["users"];
于 2012-11-04T21:24:36.533 に答える
3

String[]値を次のようにキャストする必要があります。

String[] usersTable = (String[])Application["users"];

方法:アプリケーションの状態から値を読み取るを参照してください。

于 2012-11-04T21:23:33.667 に答える
2

最初に、文字列で静的変数を単純に使用することをお勧めします

static String[] users = new String[1000];

そしてそれを操作します。アプリケーション状態よりも優れています。マイクロソフトのコメント:

ASP.NET には、既存のアプリケーションを ASP.NET に簡単に移行できるように、従来の ASP との互換性を主な目的としてアプリケーションの状態が含まれています。Application オブジェクトではなく、アプリケーション クラスの静的メンバーにデータを格納することをお勧めします。これにより、アプリケーション ディクショナリ内の項目にアクセスするよりも高速に静的変数にアクセスできるため、パフォーマンスが向上します。

アプリケーションを引き続き使用する場合は、 use を使用することを強くお勧めしますApplication.Lock();Application.UnLock(); アプリケーションのデータを操作すると、コードは次のようになります。

String[] _users = null;
String[] users
{
    get
    {
        if (_users == null)
        {
            Application.Lock();
            if (!(Application["_users_"] is String[]))
            {
                Application["_users_"] = new String[1000];
            }
            _users = (String [])Application["_users_"];
            Application.UnLock();
        }

        return _users;
    }
}

static を単純に使用することをお勧めするのはなぜですか?

これApplication["_users_"]は、実際には、Dictionary<k,v>他のデータとの間で保存される static への呼び出しであり、String[] として設定したデータであるためです。実際にそれを行う理由はありません。静的でも同じことができます。

于 2012-11-04T21:35:32.987 に答える
0

より良い解決策であるIMOは、有効期限と依存関係を制御できるため、WebCache(http://msdn.microsoft.com/en-us/library/d59zceh7.aspx)を使用することです。このようにして、アプリプールを再利用したくない場合でも、限られた一定期間データを保持できます。

         string[] Cache["users"];

オブジェクトのキャッシュにアクセスするために必要なのはこれだけです。設定も簡単です。参照: http: //msdn.microsoft.com/en-us/library/system.web.caching.cache.add (v = vs.100).aspx

于 2012-11-05T04:57:09.110 に答える