web-dev-qa-db-ja.com

asp.netセッション状態モード「SQLServer」

「私のウェブサイトは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テーブルに必要なすべてのテーブルがあります。下の画像からご覧いただけます。

enter image description here

しかし、私は自分のアプリケーションを実行すると、以下のエラーがスローされます:

"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属性で指定されています。」

エラーの画像:

enter image description here

正確な問題とその解決方法を理解できません。任意の助けをいただければ幸いです。

ありがとうございました

13
jackerj

ツリーの「プログラマビリティ」を開き、最初にdbo.TempGetVersionが存在するかどうかを確認します。おそらく、適切なスキーマがインストールされていません。

5
Pleun

これを機能させるために、次のオプションを指定してコマンドを実行しました。

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe -S . -E -ssadd -sstype p

-ssaddオプション( "SQL Serverモードのセッション状態のサポートを追加します。")により、ストアドプロシージャが正しくセットアップされました。オプションの完全なリストについては、この link を参照してください。

35
Kenn

このすべての情報は非常に貴重ですが、状況によってはさらに重要なメモがいくつかあります。

ウィザードを実行した場合、-ssaddフラグを指定して実行することはできません。 -ssaddフラグは、dbo.TempGetVersionプロシージャとその他のプロシージャも作成します。

カスタムサーバー/データベースに行く場合は、次のようにプログラムを実行する必要があります...

aspnet_regsql.exe -S YourServerName -d YourDatabaseName -ssadd -E -sstype c
  • -Sはサーバー名フラグです
  • -Dはデータベース名フラグです
  • -ssadd SQLServermモードのセッション状態のサポートを追加します。手順を削除する必要がある場合は、-ssremoveを実行します。
  • -Eは、現在のWindows資格情報を使用してターゲットデータベースに接続し、設定を行います。
  • -sstype cは、これがカスタムデータベース名であることを示します。
3
Jason Geiger

多分あなたはあなたのweb.configに悪いタグを持っています

正しい例は次のとおりです。

<sessionState 
allowCustomSqlDatabase="true" 
mode="SQLServer" 
sqlConnectionString="data source=localhost;initial catalog=YourAspStateDatabase;user id=yourLogin;password=yourpassword" cookieless="false" timeout="30"/>
2
user2167048

私はこれで立ち往生し、他の誰かがこの問題を抱えている場合に備えて、どの回答もうまくいきませんでした。これが私の問題を解決したものであり、cmdで実行しました:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe -C "Data Source=.\SQL2012;Integrated Security=True" -ssadd

誰かが私と同じ状況で行き詰まった場合に備えて。

0
Rolando Retana