通过多个实例扩展 Web 应用程序是 azure 云的最大优势之一。为了实现对我们的 Web 角色云应用程序的多个 VM 支持,我们正在实施 Azure Redis 缓存。我们正在使用 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:00 登录到应用程序,那么他的会话数据将在绝对上午 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");
}
如果可以让我知道在滑动模式下获得会话超时需要做什么,我将不胜感激。此致,
人力资源亚达夫