OleDbConnectionオブジェクトをmode = "StateServer"またはmode = "sqlserver"のセッションに格納しますが、これを試している間にセッション状態をシリアル化できないというエラーが表示されます。 stateserverおよびsqlserverモードでは、asp.netはセッション状態オブジェクトをシリアル化し、その結果、直列化不能オブジェクトまたはMarshalByRefは許可されません。oledbconnectionオブジェクトをシリアライズする方法C#
答えて
データベース接続をシリアル化する必要はありません。そのようなリソースは、本質的に直列化可能ではないため、セッションに保存することはできません。
InProcセッションモードを使用してデータベース接続を保存すると、オブジェクトへの参照が格納され、他のすべてのセッションモードではシリアル化が使用されるため、特定の形式のファイルまたはデータベースにパブリックプロパティを書き込みます。これはネットワーク接続を保持しません。
セッションでデータベース接続を保存しないだけで問題ありません。 「接続プーリング」と呼ばれる既存のホイールを再作成しないでください。これを自分で行う必要はありません。
これは仕様による動作です。適切な理由によりDbConnection
の実装にSerializable
とマークされていません。最も重要なのは、開いている接続がアンマネージドライブソケットまたはパイプハンドルを保持することです。
アプリケーション設計の観点から、ライブ接続をセッションに格納することは意味をなさないでしょう。また、要求を超えて接続を開いたままにすると、パフォーマンスが低下する可能性があります。データベース接続はプールされ、新しい接続を作成して開くと、既存の接続をプールから内部的に再利用するため、要求ごとに1つの接続を開く/閉じるのが最も効率的で推奨されます。
何らかの理由でセッションに依存する接続がある場合は、実際の接続オブジェクトの代わりに接続文字列(またはそれらのセットを指すインデックス)を格納します。また
参照:
https://stackoverflow.com/a/2738199/1132334、
https://forums.asp.net/t/1790135.aspx?SQL+connection+best+practices
- 1. C#で複数のオブジェクトをXMLにシリアライズする方法
- 2. JQueryでJSONオブジェクトをシリアライズする方法
- 3. RESTフレームワーク:オブジェクトをシリアライズする方法は?
- 4. JavaでJSONオブジェクトをシリアライズする方法
- 5. C#Referencedオブジェクトのシリアライズ
- 6. C#でJsonArrayをシリアライズする方法は?
- 7. のC# - シリアライズとデシリアライズ方法
- 8. C#WCFオブジェクト[]メンバ型のシリアライズ
- 9. .NET OleDbConnectionオブジェクトとそのConnectionStringプロパティを正しく初期化する方法
- 10. C#でオブジェクトをシリアライズして保存する最も簡単な方法は?
- 11. リストは、OleDbConnectionオブジェクトとテーブルをエクセル:: GetOleDbSchemaTableメソッド()
- 12. phpオブジェクトのシリアライズ/シリアライズ
- 13. フィールドを知らずにC++オブジェクトをシリアライズ
- 14. C言語でFileInfoオブジェクトをXMLにシリアライズ
- 15. BufferedImagesを含むオブジェクトをシリアライズする方法
- 16. NewtonSoft Jsonを使用してFileInfoオブジェクトをシリアライズする方法は?
- 17. コントロールをシリアライズする方法
- 18. ルアテーブルをシリアライズする方法
- 19. HashSetをシリアライズする方法
- 20. Javaハッシュセット複数のオブジェクトをシリアライズする方法
- 21. cbor2でオブジェクトをシリアライズおよび逆シリアル化する方法は?
- 22. ジェネリックJavaScriptオブジェクトをXMLにシリアライズする方法
- 23. .NETで直列化できないオブジェクトをシリアライズする方法
- 24. JSONオブジェクト内でJSON文字列をシリアライズする方法
- 25. 工場で作成したオブジェクトをシリアライズする方法
- 26. ファイルと別のオブジェクトをシリアライズする方法
- 27. Pythonでjira問題オブジェクトをシリアライズする方法は?
- 28. エラーエンティティ・フレームワークをシリアライズするオブジェクト
- 29. OleDbConnectionの接続プールをクリアする方法
- 30. OleDbConnection状態を確認する最良の方法
悪い考えで、それをしません。データベース接続は可能な限り短命でなければなりません。それらを使用して処分し、必要以上に長く保管しないでください。唯一実行可能なオプションは、ユーザーに固有の接続文字列を格納することです。 – Igor
は完全に@Igor – Alistair
@Igorに同意しているとは限らない場合もありますが、いくつかのユースケースについては、_暖かい、ready-to-go_接続のために何か言われています。私はそれがセッションに入ることを保証していません。 – MickyD