プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。

ASP.net(C#)で単純なシステムをつくっているのですが、
プログラムでサーバー上のフォルダを削除すると、どうもSession情報が消されてしまうようです。

調べたところ、Web.configで↓
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" stateNetworkTimeout="10" />
を追加すればよいと書いてあったので、追加すると、
「セッション状態をシリアル化できません。'StateServer' および 'SQLServer' モードでは、ASP.NET はセッション状態オブジェクトをシリアル化します。その結果、シリアル化できないオブジェクトまたは MarshalByRef オブジェクトは許可されません。'Custom' モードのカスタム セッション状態ストアによって類似したシリアル化が実行される場合、同一の制限が適用されます。


↑のエラーメッセージが出るようになってしまいました(><;)!
一体どのように回避すればよいのでしょうか・・・?
どなたかご教授下さい。

A 回答 (1件)

>プログラムでサーバー上のフォルダを削除すると、どうもSession情報が消されてしまうようです。



WebApplication 仮想フォルダ配下のフォルダを消してしまうということでしょうか。そもそもの作りがよろしくないように思います。一般的には、WebApplication の仮想フォルダ外の別の場所を処理対象とするべきです。

---

>「セッション状態をシリアル化できません...

Session 変数に、シリアライズできないオブジェクトを入れている場合に発生します。対処方法としてはそういうオブジェクトを Session 変数に入れないようにします。
例えば DataSet, DataTable はシリアライズ可能ですが、DataView はシリアライズ不可です。
    • good
    • 0
この回答へのお礼

edp3142さん。
お返事遅れて大変申し訳ございませんでした。

>WebApplication 仮想フォルダ配下のフォルダを消してしまうということでしょうか。そもそもの作りがよろしくないように思います。一般的には、WebApplication の仮想フォルダ外の別の場所を処理対象とするべきです。

説明が足りず申し訳ありません。
上記で削除しているフォルダは仮想フォルダとは全く別のフォルダです。

>Session 変数に、シリアライズできないオブジェクトを入れている場合に発生します。対処方法としてはそういうオブジェクトを Session 変数に入れないようにします。

おっしゃるとおりのようで、Sessionに入れる情報は独自クラスで生成したDataSetでした。

プログラムを変更することで回避できました。
ありがとうございました。

お礼日時:2008/11/06 09:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!