4

特定のページ レベルの情報を ViewState に保存する次のプロパティがあります。

protected ViewStateModel Model
    {
        get
        {
            if (_pageModel == null)
            {
                _pageModel = (ViewStateModel) ViewState[_pageModelKey];
                if (_pageModel == null)
                {
                    _pageModel = new ViewStateModel();
                    ViewState[_pageModelKey] = _pageModel;
                }
            }

            return _pageModel;
        }
        set
        {
            ViewState[_pageModelKey] = _pageModel = value;
        }
    }

これは、IIS ワーカー プロセスがリサイクルされるまでうまく機能します。私は得る

タイプ「ViewStateModel」のオブジェクトをタイプ「ViewStateModel」にキャストできません

ここでデバッグすると、ViewState には ViewStateModel 型のオブジェクトとそのすべての値が含まれていることがわかりますが、その型を定義済みの Model クラスと比較すると、false が返されます。

// this always returns false if the worker process has been recycled
  ViewState[_pageModelKey] is ViewStateModel  
4

2 に答える 2

2

IIS ワーカー プロセスのリサイクルは、ViewState に影響を与えません。リサイクルは状態に影響Sessionを与える可能性がありますが、これはページ上の暗号化された非表示フィールドにすぎません。ViewState に影響を与えると、次の例外が発生する可能性が高くなります。ApplicationViewState

このページの ViewState は無効であり、破損している可能性があります。

このサポート記事をチェックして、提案が役立つかどうかを確認してください。

于 2012-05-04T22:43:58.700 に答える