8

これに似た多くの質問があります...しかし、私は彼らがこの特定の問題をどのように抱えているのかわかりません:

次で始まるエラーを返すWebサービスがあります。

セッション状態をシリアル化できません。「StateServer」および「SQLServer」モードでは、ASP.NETはセッション状態オブジェクトをシリアル化します。その結果、シリアル化できないオブジェクトまたはMarshalByRefオブジェクトは許可されません。「カスタム」モードのカスタムセッション状態ストアによって同様のシリアル化が行われる場合も、同じ制限が適用されます。

したがって、このような質問では、SerializationExceptionを探し、シリアル化できないものを見つけて、シリアル化可能にします。簡単に聞こえます...しかし、私がそれを探すとき、私はこれを見つけます:

[SerializationException:アセンブリ'Microsoft.Web.Services3、Version = 3.0.0.0、Culture = neutral、PublicKeyToken=31bf3856ad364e35'のタイプ'Microsoft.Web.Services3.StateManager'はシリアル化可能としてマークされていません。]

これは私を混乱させます...それは実際にStateManagerをシリアル化しようとしているように聞こえます...それはStateManagerがシリアル化できない内部の他の何かを隠しているだけですか?もしそうなら、何を見つける方法はありますか?それとも、StateManagerは本当に何らかの理由でシリアライズ可能であると想定されていますか?(私はこれをあまり明確に述べていないと思います...申し訳ありません...質問があれば、私はそれらに答えるために最善を尽くします。)

また、セッションストアプロバイダーとしてNCacheを使用していることにも注意する必要があります。これは、何らかの形で関連している可能性があるようです。しかし、それが私が見ているものをどのように引き起こす可能性があるのか​​は私にはわかりません。

4

1 に答える 1

1

カスタム オブジェクトをシリアル化する場合は、必ずクラスを属性で装飾してください。セッション状態にするオブジェクトにこれがないと、シリアライザーは失敗します。おそらく、保存しているアイテムを分離し、そのプロパティと、それ自体がその属性を持っていることを確認する必要があります。

于 2012-10-07T13:57:15.397 に答える