0

This Questionと同様に、インプロセス セッションに大きく依存するアプリケーションがあります。現在、セッション ストアをローカルの State Server に移動しようとしています。

エラーが発生します:

アセンブリ 'System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' に 'System.Web.UI.Control' と入力すると、シリアル化可能としてマークされません。

問題は、シリアル化しようとしているコントロールを特定できないことです。

完全な例外とスタック トレースには、追加情報は表示されません。

シリアル化しようとしているコントロールを特定する方法はありますか?

ASP.net、IIS7、Framework 4.0 の使用

4

1 に答える 1

1

Session[orのグローバル検索をSession.Item実行し、右側に = があるものをすべて見つけます。セッションへの割り当てはこれですべてです。数百を超えることはできません。それらの 1 つは System.Web.UI.Control です。データベースへのアクセスを避けるためにセッションに入れられた可能性があります。コントロールを格納する代わりに、DataTable、DataSet、またはその他の値を格納するようにそのコードを書き直してください。

ソース コードがない場合、逆コンパイル、コードの修正、再コンパイル以外に対処する簡単な方法はありません。

SqlSession をあきらめたとしても、UI コントロールを Session に入れるのをやめたいと思うかもしれません。OutOfMemory の問題が発生する可能性があります: http://blogs.msdn.com/b/tess/archive/2008/05/28/asp -net-memory-thou-shalt-not-store-ui-objects-in-cache-or-session-scope.aspx

于 2011-11-08T18:29:08.533 に答える