「私のウェブサイトはLIVEです。この問題は、ローカルホストではなく、LIVEサーバーでのセッションタイムアウトの設定に関連しています。」
セッションの期限切れが早すぎるという問題があります。 2-5分でリンクします。多くのことを試しましたが、ようやくセッションを「SQL Server」モードで保存することにしました
私のweb.configファイルに次のコーディングがあります:
<sessionState mode="SQLServer" cookieless="false" timeout="45"
sqlConnectionString="data source=xxx.xx.xx.xxx;uid=xxxxxxx;pwd=xxxxxxxx"/>
サーバー上のASPStateテーブルに必要なすべてのテーブルがあります。下の画像からご覧いただけます。
しかし、私は自分のアプリケーションを実行すると、以下のエラーがスローされます:
"ASP.NETバージョン2.0セッション状態がSQLサーバーにインストールされていないか、ASP.NETにdbo.TempGetVersionストアドプロシージャを実行する権限がないため、SQLサーバーを使用できません。ASP.NETセッション状態スキーマがASP.NETセッション状態SQL Serverバージョン2.0以上をインストールしてください。スキーマがインストールされている場合は、dbo.TempGetVersionストアドプロシージャの実行権限をASP.NETアプリケーションプールIDまたはSQL Serverユーザーに付与してくださいsqlConnectionString属性で指定されています。」
エラーの画像:
正確な問題とその解決方法を理解できません。任意の助けをいただければ幸いです。
ありがとうございました
ツリーの「プログラマビリティ」を開き、最初にdbo.TempGetVersionが存在するかどうかを確認します。おそらく、適切なスキーマがインストールされていません。
これを機能させるために、次のオプションを指定してコマンドを実行しました。
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe -S . -E -ssadd -sstype p
-ssadd
オプション( "SQL Serverモードのセッション状態のサポートを追加します。")により、ストアドプロシージャが正しくセットアップされました。オプションの完全なリストについては、この link を参照してください。
このすべての情報は非常に貴重ですが、状況によってはさらに重要なメモがいくつかあります。
ウィザードを実行した場合、-ssaddフラグを指定して実行することはできません。 -ssaddフラグは、dbo.TempGetVersionプロシージャとその他のプロシージャも作成します。
カスタムサーバー/データベースに行く場合は、次のようにプログラムを実行する必要があります...
aspnet_regsql.exe -S YourServerName -d YourDatabaseName -ssadd -E -sstype c
多分あなたはあなたのweb.configに悪いタグを持っています
正しい例は次のとおりです。
<sessionState
allowCustomSqlDatabase="true"
mode="SQLServer"
sqlConnectionString="data source=localhost;initial catalog=YourAspStateDatabase;user id=yourLogin;password=yourpassword" cookieless="false" timeout="30"/>
私はこれで立ち往生し、他の誰かがこの問題を抱えている場合に備えて、どの回答もうまくいきませんでした。これが私の問題を解決したものであり、cmdで実行しました:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe -C "Data Source=.\SQL2012;Integrated Security=True" -ssadd
誰かが私と同じ状況で行き詰まった場合に備えて。