5

複数のインスタンスを使用して Web アプリケーションをスケールアウトできることは、Azure クラウドの最大の利点の 1 つです。Web ロール クラウド アプリケーションで複数の VM をサポートするために、Azure Redis Cache を実装しています。セッション状態を維持するために RedisSessionStateProvider プロバイダーを使用しています。以下は、web.config ファイル内のセッション管理の構成設定です。

<authentication mode="Forms">
  <forms loginUrl="~/Login" slidingExpiration="true" timeout="20" defaultUrl="~/Default" />
</authentication>
<sessionState timeout="20" mode="Custom" customProvider="MySessionStateStore">
  <providers>
     <add name="MySessionStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider"
        host = "dummy.redis.cache.windows.net" 
        port = "6380" 
        accessKey = "dummysecretkey" 
        ssl = "true" 
        throwOnError = "true" 
        retryTimeoutInMilliseconds = "5000" 
        databaseId = "0" 
        applicationName = "" 
        connectionTimeoutInMilliseconds = "5000" 
        operationTimeoutInMilliseconds = "1000" 
        connectionString = ""/>  
  </providers>

問題は、ユーザーのポストバックでセッション タイムアウトが延長されないことです。ユーザーが午前 10 時にアプリケーションにログインすると、セッション データは午前 10 時 20 分に期限切れになります。ユーザーが午前 10 時 15 分にポストバックした場合、セッションは午前 10 時 35 分に期限切れになるはずですが、これは起こらず、午前 10 時 20 分に期限切れになります。

以下は、ログインボタンのクリックイベントのコードです

 protected void Button1_Click(object sender, EventArgs e)
 {
   FormsAuthentication.SetAuthCookie(TextBox1.Text.Trim(), true);
   ConnectionMultiplexer connection = ConnectionMultiplexer.Connec("dummy.redis.cache.windows.net,ssl=true,password=dummysecretkey");
   IDatabase cache = connection.GetDatabase();
   Session["UserName"] = TextBox1.Text;
   Response.Redirect("Default.aspx");
 }

スライディングモードでセッションタイムアウトを取得するために何をする必要があるか教えていただければ幸いです。よろしくお願いします、

HRヤダブ

4

3 に答える 3

3

問題を報告していただきありがとうございます。上記の報告されたバグを修正する RedisSessionStateProvider NuGet パッケージの新しいバージョンをリリースしました。

https://www.nuget.org/packages/Microsoft.Web.RedisSessionStateProvider/1.5.0

編集: これに関してもう 1 つの問題が見つかりました。ASP.NET は AJAX 要求に対して ResetItemTimeout を呼び出さず、セッション タイムアウトをスライドさせるのは他のセッション状態メソッドの責任になります。このバグを修正し、新しい NuGet パッケージをリリースしました: https://www.nuget.org/packages/Microsoft.Web.RedisSessionStateProvider/1.6.5

これで問題が解決したかどうかお知らせください。

于 2015-02-05T00:58:48.490 に答える