3

セッションを失うという問題が発生しているアプリケーションがありますが、アプリケーション プールのリサイクルが頻繁に行われていることが原因であるとほぼ確信しています。

アウト オブ プロセス ソリューションを試して、SQLServer sessionState を構成したかったのですが、ワーカー プロセスをリサイクルすると、セッションがまだ吹き飛ばされています。これが私のweb.configです

<sessionState cookieless="false" stateConnectionString="tcpip=localhost:42424"  mode="SQLServer" sqlConnectionString="Data Source=(local;User ID=user;Password=password" timeout="180" />

適切な SQL スクリプトを実行してデータベースをセットアップしました。セッションが作成され、データベースに保存されていることがわかりますが、web.config を変更するか、ワーカー プロセスを手動でリサイクルすると、セッションが失われます。私は何を間違っていますか??

ちなみに、StateServer モードでもまったく同じ動作をしています。適切に構成しているようですが、ログインすると状態サービスのメモリフットプリントが大きくなることがわかります....シリアル化されていないオブジェクトをプッシュしようとするとエラーが発生しました....しかし、アプリプールをリサイクルするか、 web.config セッションが失われます....

私はまた、ここで見つけることができる Memcached セッションプロバイダー (これは私が本当に使いたいものです) をセットアップしようとしました: http://memcachedproviders.codeplex.com/releases/view/10468

それも同じことをしています!データベースでセッションが作成されていることを確認できます。シリアル化されていないオブジェクトを操作しようとすると、シリアル化に関するエラーが発生します....しかし、アプリケーション プールがリサイクルされると、セッションが失われます。
いくつかのログを有効にした後、イベント ビューアに次のように表示されます: イベント コード: 1003 イベント メッセージ: アプリケーションのコンパイルが開始されています

誰でもない??私は本当にプロセスセッション状態から抜け出す必要があります....助けて!!

4

1 に答える 1

0

マシン キーの設定を確認します (IIS 7.5 を想定)。Web サーバーがマシン キーを自動生成するように設定されている場合、アプリケーションのリサイクル時に新しいキーが生成され、セッションが失われる可能性があります。

Web アプリケーション用の一意のマシン キーを簡単に生成する方法については、こちらのリンクを参照してください。Web サーバーまたは Web アプリケーション レベルでそれらを生成できる必要があります。

http://blogs.msdn.com/b/amb/archive/2012/07/31/easiest-way-to-generate-machinekey.aspx

また、SQL Server セッション状態マネージャーである FWIW は、データベースと非常に対話的です。それは機能しますが、そのセッション プロバイダーを使用してすべてのリクエストに対してデータベースにアクセスすることになります。

于 2012-10-03T14:12:07.857 に答える