2011-10-18 5 views
1

私はプロジェクトに取り組んでおり、開発マシンで正常に動作します。テストのためにステージサーバーに移動すると、次のエラーが表示されます。テストサーバーでのasp.netシリアル化の問題

Unable to serialize the session state. In 'StateServer' and 'SQLServer' 

エラーメッセージが表示され、自分のビジネスオブジェクトの1つを問題として指定します。コードは実際に別の開発者によって開発されましたが、問題はビジネスオブジェクトがセッションに保存されるときだと思います。

ローカルマシンでは動作しますが、リモートサーバーでは動作しないのはなぜですか?

+1

両方のマシンでweb.configが完全に等しいことを確認してください。状態サーバーを使用する場合、セッション内のすべてのオブジェクトは直列化可能でなければなりません。 –

+0

彼らは間違いなく等しいです。程遠い。私が探していなければならないことはありますか? – William

+0

はいセッション構成。セッションに入れるすべてのオブジェクトがシリアライズ可能であるか、動作していないことを確認する必要があります。 –

答えて

2

おそらく、開発マシンはメモリにシリアル化するInProcセッションプロバイダを使用します。 SQLServerセッションプロバイダを使用すると、オブジェクトに対する要求がより強くなります。

おそらく、あなたのオブジェクトの1つはシリアル化できません。単純な「シリアライズ可能ではない」から「シリアライズ不可能な外部のタイプに頼っている」のように、理由はさまざまです。

内部例外を調べて、問題のあるタイプを追跡してください。通常、そこに意味情報があります。

+0

InProcが使用されているかどうかを確認する方法はありますか?残念ながら、サーバーはクライアントマシンであるため、私はそれをあまり支配しません。私は私のオブジェクトがシリアライズ可能であるかどうかをテストするために使うことができるコードを与えた別の記事を見つけました。 – William

+0

'web.config'の' sessionState'要素は、あなたのデータがセッションコンテナ内で永続化される方法を制御します。クライアントのマシン上で 'InProc'または' SqlServer'に設定されているようです。 InProcに一時的に変更して問題があることを確認し、オブジェクトを修正してシリアル化できるようにしてください。 http://msdn.microsoft.com/en-us/library/h6bb9cz9(VS.71).aspx –

+0

SQL Serverセッション管理で式が入力されたのはいつですか?? –