0

ユーザーが特定のページ/コントローラーへのアクセスを許可されているかどうかを判断するために、グローバル フィルターを使用しています。単純なセッション変数の作成を行うことができないため、これについて多くのトレッドを取得できませんでした。これが私の簡略化されたコードです:

public class MyActionFilterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext context)
    {

        context.HttpContext.Session.Add("asdfasdf", 1234);
        //Check if user is authorized in db
        //...

        base.OnActionExecuted(context);
    }
}

エラー:

System.Web.HttpException: Failed to login to session state SQL server for user '<USERNAME>'.

コメントアウトするSession.Addと、アプリケーションは正常に動作します。与えられたエラーはまったく関係がないので奇妙です(私は思う)。この場合、セッション変数を機能させるにはどうすればよいですか? より良い質問ですが、これはユーザー認証の正しい方法ですか?

4

1 に答える 1

3

お使いのアプリケーションは、SQL Server のsession state永続性を使用するように構成されているようです。また、web.config の接続文字列に問題があります。

SQL Server セッション状態の永続性を使用する場合はcorrectly configured、データベースがあり、正しい接続文字列を指定していることを確認してください。

<configuration>
  <system.web>
    <sessionState mode="SQLServer"
      sqlConnectionString="Integrated Security=SSPI;data 
        source=SampleSqlServer;" />
  </system.web>
</configuration>

SQL Server を使用してセッションを保持したくない場合は、InProc モードに戻すことができます。

  <system.web>
    <sessionState mode="InProc" />
  </system.web>
</configuration>
于 2013-01-23T21:52:14.573 に答える