セッションステータスをシーケンス化できません.セッションステータスモードがStateServerまたはSQLServerの場合、シーケンス化できないオブジェクトまたはMarshalByRefオブジェクトは使用できません.


sessionはあなたのアプリケーションプロセスで働いています.asp.Netプロセス、iisは20分後に関連アプリケーションを再起動することが多く、バッファプールがいっぱい(例えば100個後)になっても再起動し、様々なプロセス保護措置が随時再起動されるため、InProc方式でセッションを失うのは普通です.csdnでは,このモードは「失われやすい,一時的な」変数しか保存できないことを明確に示しており,これはcacheが以前にない解決策である.長期にわたって保持されているデータは、外部データソースに保存されます.ステータス・サーバは、プロセス外のデータ・ソースです.
StateServerモードの本質は、セッションをaspnet_とは独立した個別のプロセスに格納することです.wp.exeまたはw 3 wp.exe .このサービスを有効にすると、タスクマネージャにaspnet_という名前のstate.exeのプロセスでは、設定の具体的な手順について説明します.
1、レジストリの変更(キーステップ、以下図)
regeditを実行→レジストリを開く→HKEY_を見つけるLOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_stateParametersノード→AllowRemoteConnectionのキー値を「1」に設定(1はリモートコンピュータの接続を許可し、0は禁止)→Port(ポート番号)を設定
注意事項:
a)、ASP.NET State Serviceが実行中で、レジストリの内容を変更した後、サービスを再起動する必要があります
b)、注意ポート番号のキー値は16進数で保存されており、10進数で修正することができ、42424はデフォルトのポートである
c)、AllowRemoteConnectionのキー値を「1」に設定すると、リモートコンピュータへの接続が許可されることを意味します.つまり、サービスポートを知っていれば、ASPを楽しむことができます.NET State Serviceは、Sessionをあなたのパソコンのプロセスに保存します.キー値が"0"の場合、stateConnectionsStringが"tcpip=localhost:42424"と"tcpip=127.0.0.1:4242424"の場合のみ、ASPを使用することができる.NET State Service
2、ASPを開く.NET State Service
「マイコンピュータ」を右クリック→管理→サービスとアプリケーション→サービス→「ASP.NET State Service」をダブルクリック→起動(「自動」に設定可能)
説明:インストールするだけです.Net Frameworkは、このサービスを所有しています.
3、Webを変更する.config
Webを開くconfig→ノードの内容を見つける
mode=”InProc”
stateConnectionString=”tcpip=127.0.0.1:42424″
sqlConnectionString=”data source=127.0.0.1;Trusted_Connection=yes”
cookieless=”false”
timeout=”20″/>
→以下に変更

ローカルの場合:tcpip=127.0.0.1:42424
注意事項:
1、timeout="20"はセッション20分タイムアウトである.デフォルトは分単位です.
2、IPアドレス(リモートコンピュータIP、コンピュータ名、ドメイン名)とポート番号、ポート番号はASP.NET State Serviceのサービスポートが一致
3、発生した異常:セッションの状態をシーケンス化できません.
セッションステータスモードがStateServerまたはSQLServerの場合、シーケンス化できないオブジェクトまたはMarshalByRefオブジェクトは使用できません.
解決策:セッションに保存する必要があるオブジェクトエンティティクラスに[Serializable]を追加
例:
[Serializable] 
public class UserInfo
{
   public UserInfo(){}
   private int _id;

   public int Id
   {
     get();
     set();
   }
}

 
たとえば、DbTransationオブジェクトはシーケンス化できません.したがって、Sessionを使用してMarshalByRefタイプを継承したオブジェクトを格納することはできません.
解決策は,CacheとSessionIDを用いてSessionをシミュレートできることである.Cacheクラスは任意のタイプのオブジェクトをキャッシュできます.