質問

次のweb.config行を使用してセッション状態を機能させようとしています:

<sessionState 
    mode="SQLServer" 
    stateConnectionString="tcpip=127.0.0.1:42424" 
    sqlConnectionString="Data Source=dbServer;User ID=stateUser;Password='thepassword'" 
    cookieless="false" 
    timeout="20"/>

dbServerで、次のコマンドを実行してASPState dbをセットアップしました。

aspnet_regsql.exe -S localhost-E -ssadd -sstype p

webServerでASP.Net状態サービスを開始しましたが、ASPStateTempApplicationsまたはASPStateTempSessionsテーブルにレコードが表示されず、セッションがまだプロセスに保存されているように見えます。

何が問題なのですか?状態サービスをDBサーバーで実行する必要がありますか? .net 3.5.1がインストールされているにもかかわらず、そのマシンでは利用できないため、IISと共にインストールされます。

IISログに失敗のヒントは表示されません。何が問題なのですか?

役に立ちましたか?

解決

最初に、SQL Serverセッション状態を使用するためにState Serviceを開始する必要はありません。 ASP.NET State Serviceを忘れてください。

サイトがセッション変数を作成していることを確認しますか?これらの変更をweb.configに入れたからといって、セッション変数を一度も使用しないと、それは使用されません。

他のヒント

パスワードの周りに本当に引用符がある場合は、それらを削除してみてください:

sqlConnectionString="Data Source=dbServer;User ID=stateUser;Password=thepassword"

次の行を削除します。SQLセッションストレージの機能はありません。

stateConnectionString="tcpip=127.0.0.1:42424" 

また、状態サービスを停止することもできます。 SQL Serverセッション状態ではなく、アウトプロセスセッション状態に必要です。

また、SQL Serverセッション状態では、 aspnet_regsql.exe ではなく、データベースで InstallSqlState.sql を実行する必要があります。新しい ASPState データベースを作成する必要があります。

小さなHttpModuleを書くのはどうですか?ユーザーを新しいコードベースに移行する必要がある期間、それを所定の場所にドロップできます。このモジュールは、各ページリクエストでいくつかの作業を行い、ユーザーのセッションを確認し、セッションを破棄する必要があるかどうかを判断できます。おそらく、セッションが最初に作成されたときにユーザーのセッションにアプリケーションバージョン文字列を保存し、現在のアプリバージョン文字列をそれと比較します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top