この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 16577|答える: 1

[ASP.NET] セッション状態はシリアライズできません。 「StateServer」や「SQLServer」モードで...

[リンクをコピー]
掲載地 2017/11/18 21:37:45 | | | |
セッション状態はシリアライズできません。 「StateServer」や「SQLServer」モードでは、ASP.NET セッション状態オブジェクトをシリアライズするため、非シリアライズ可能なオブジェクトやMarshalByRefオブジェクトは許可されません。 カスタムセッションステートストアが「カスタム」モードで同様のシリアライズを行う場合も同様の制限が適用されます。        



解決:

Sessionを割り当てる際に変数はシリアライズできないので、[Serializable]をクラスに追加してみてください。 問題解決

[連続順番可能]
公共クラスのMyClass
{
.......
}

では、[Serializable]について話しましょう。これはクラスがシリアライズ可能であることをコンパイラに知らせるために使われます

シリアライズとは、オブジェクトインスタンスの状態をストレージ媒体に保存するプロセスを指します。 このプロセスでは、オブジェクトのパブリックフィールドとプライベートフィールド、クラス名(クラスが存在するアセンブリを含む)がバイトストリームに変換され、その後にバイトストリームをデータストリームに書き込みます。 その後、オブジェクトがデシリアライズされると、元のオブジェクトと同一のコピーが作成されます。
オブジェクト指向環境でシリアライズ機構を実装する際には、使いやすさと柔軟性の間にトレードオフが必要です。 このプロセスを十分にコントロールできれば、ほぼ自動的にできます。 例えば、単純なバイナリシリアライズでは不十分だったり、クラス内のどのフィールドを特定の理由でシリアライズする必要があるかを判断する必要があります。 以下のセクションでは、.NETフレームワークが提供する信頼性の高いシリアライズメカニズムを探り、シリアライズプロセスを自分のニーズに合わせてカスタマイズできる重要な機能のいくつかを紹介します。





先の:ASP.NET セッションを保存するStateServer
次に:SQLserverのテーブルを別のテーブルにコピーする方法
 地主| 掲載地 2017/11/19 16:19:48 |
MarshalByRefから継承するDbTransationオブジェクトなど一部のオブジェクトは、シリアライズできません。 したがって、MarshalByRef型を継承するオブジェクトをSessionで保存することはできません。
回避策として、キャッシュとSessionIDを使ってセッションをエミュレートします。 Cacheクラスはあらゆる種類のオブジェクトをキャッシュできます。
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com