我们可以在同一个应用程序中将会话状态和缓存存储在Redis缓存中吗?

时间:2017-08-21 10:49:15

标签: asp.net azure session caching redis

我正在我正在进行的应用程序中实现redis cahce,我已成功为会话状态实现了redis缓存,现在会话存储在redis缓存中。

下面的web.config设置,

  

添加name =“MySessionStateStore”   类型= “Microsoft.Web.Redis.RedisSessionStateProvider”                端口= “6280”                throwOnError =“true”connectionString =“webapplication1.redis.cache.windows.net:6380,password = some   密码,SSL =真,abortConnect =假”   host =“webapplication1.redis.cache.windows.net”accessKey =“some key”   SSL = “真”

同样现在我必须在redis cahce上移动当前的缓存实现,我已经在下面的代码片段中实现了(在vb.net中),

 Public Function GetApplicationCacheData() As DataSet
            Const rawKey As String = "AKey_"
            Dim dsData As DataSet
            Dim connection As ConnectionMultiplexer = ConnectionMultiplexer.Connect("webapplication1.redis.cache.windows.net:6280,password=some password,ssl=True,abortConnect=False")
            Dim redisObj As IDatabase = connection.GetDatabase()
            Dim valueObj As RedisValue = redisObj.StringGet(rawKey)

            If Not valueObj.HasValue Then
                dsData = class1.GetApplicationCacheData()
                redisObj.StringSet(rawKey,JsonConvert.SerializeObject(dsData), TimeSpan.FromMinutes(90))
            Else
                dsData  = JsonConvert.DeserializeObject(Of DataSet)(redisObj.StringGet(rawKey))
            End If

            Return dsData
        End Function

现在问题是这个缓存实现工作正常,如果我从会话状态单独运行但是当我在redis缓存中实现会话状态和缓存时,会话变为null并且页面重定向到具有表单身份验证的登录页面。

我们在azure门户网站上创建了一个测试应用程序,并将其用于会话状态和缓存存储。

所以我的问题是,我们是否可以使用一个应用程序进行实现,或者我们应该在门户上创建另一个应用程序以在redis cahce中运行缓存功能或者我的实现有一些不一致?

1 个答案:

答案 0 :(得分:0)

您是否尝试过设置" applicationName"会话状态配置的参数?