• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ASP.net 教えてください!!(初心者))

ASP.netでのセッション情報が消える問題の回避方法は?

このQ&Aのポイント
  • ASP.net(C#)でシステムを構築中に、プログラムでサーバー上のフォルダを削除するとSession情報が消えるという問題が発生しました。Web.configに<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" stateNetworkTimeout="10" />を追加するとセッション状態をシリアル化できませんというエラーメッセージが表示されます。
  • セッション状態をシリアル化できないという制限は、'StateServer'や'SQLServer'モードの場合に適用されます。同様の制限は'Custom'モードでも適用されます。
  • この問題を回避するためには、カスタムセッション状態ストアを使用する必要があります。カスタムセッション状態ストアを使用すると、シリアル化されないオブジェクトやMarshalByRefオブジェクトも利用できます。

質問者が選んだベストアンサー

  • ベストアンサー
noname#259269
noname#259269
回答No.1

>プログラムでサーバー上のフォルダを削除すると、どうもSession情報が消されてしまうようです。 WebApplication 仮想フォルダ配下のフォルダを消してしまうということでしょうか。そもそもの作りがよろしくないように思います。一般的には、WebApplication の仮想フォルダ外の別の場所を処理対象とするべきです。 --- >「セッション状態をシリアル化できません... Session 変数に、シリアライズできないオブジェクトを入れている場合に発生します。対処方法としてはそういうオブジェクトを Session 変数に入れないようにします。 例えば DataSet, DataTable はシリアライズ可能ですが、DataView はシリアライズ不可です。

kyo----
質問者

お礼

edp3142さん。 お返事遅れて大変申し訳ございませんでした。 >WebApplication 仮想フォルダ配下のフォルダを消してしまうということでしょうか。そもそもの作りがよろしくないように思います。一般的には、WebApplication の仮想フォルダ外の別の場所を処理対象とするべきです。 説明が足りず申し訳ありません。 上記で削除しているフォルダは仮想フォルダとは全く別のフォルダです。 >Session 変数に、シリアライズできないオブジェクトを入れている場合に発生します。対処方法としてはそういうオブジェクトを Session 変数に入れないようにします。 おっしゃるとおりのようで、Sessionに入れる情報は独自クラスで生成したDataSetでした。 プログラムを変更することで回避できました。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A