- PR -

セッション状態モードをStateServerに変更したら

1
投稿者投稿内容
よねちん
ベテラン
会議室デビュー日: 2002/09/18
投稿数: 55
投稿日時: 2005-06-07 16:52
セッション状態モードをInprocからStateServerに変更しました。
アウトプロセスによりワーカプロセスの負荷を軽減する為に。

取りあえず変更すればそれだけで良いと思いましたが・・・・
Session情報に構造体を代入する時に以下のエラーがでました。

セッション状態をシリアル化できません。セッション状態モードが 'StateServer'
か 'SQLServer' の時は、シリアル化できないオブジェクトまたは MarshalByRef
オブジェクトは許可されません。

なんだこりゃと思って調べたら・・・MicroSoftのバグでした。
http://support.microsoft.com/default.aspx?scid=kb;ja;312112

そこで解決方法としてClassをSerializableにするようにと書いてあるのですが・・・

Classで宣言している場所には
<Serializable()>Public Class MyClass
'Class code
End Class

こんな感じにして宣言を追加し

構造体で宣言している場所には

<Serializable()> Public Structure rsdata

Dim txt1 As String
Dim txt2 As String

   End Structure

と宣言してあげれば良いのがわかりました。

ではWEBコントロールの場合にはどうやればいいのでしょうか?

現在セッションに

Session("SelectGrid") = myGrid.SelectedItem

とかしているところが結構あるのですが・・・・そこでエラーになって
しまいます。
WEBコントロールをSerializableするにはどうすればいいでしょうか?

教えてください。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-06-07 17:05
回答ではないですが、WebコントロールはMVCでいうViewにあたるので
永続化されることを想定してないのだと思います。
1

スキルアップ/キャリアアップ(JOB@IT)