ASP.NET 4.0中Page.Cache属性的范围

时间:2013-12-01 09:32:08

标签: asp.net vb.net caching

我现在正在研究ASP.NET项目 并希望使用Page.Cache属性来缓存String数据,如下方式。 但是,它的行为类似于具有会话范围。 我理解Page.Cache属性正在重新调整当前的System.Caching.Cache对象 并且必须具有应用程序范围。 我可以检查下面的代码工作正常,但我的项目的代码没有 - 它为每个会话创建缓存 而且,替换Cache Application(使用Lock和UnLock)也可以正常工作。

Public Class WebForm1
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim key_str As String = "cache_key"
        Dim cached_value = Cache.Get(key_str)
        If cached_value Is Nothing Then
            cached_value = "stored_value"
            Cache.Insert(key_str, cached_value, Nothing, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(5), CacheItemPriority.Normal, New CacheItemRemovedCallback(AddressOf RemovedCallback))
        End If
        Label1.Text = cached_value
    End Sub
    Public Sub RemovedCallback(ByVal key As String, ByVal value As Object, ByVal removedReason As CacheItemRemovedReason)
        Debug.WriteLine("#Callback!")
    End Sub
End Class
  • 上面的代码
    • 工作正常
  • 我的项目代码
    • 的作用类似于会话范围
    • 如果将Cache替换为Application,则可以正常使用

是否有可能发生这样的行为? (或者我只是在逻辑中的任何其他地方犯了错误?)

请指出如果涉及某些配置文件。

1 个答案:

答案 0 :(得分:0)

我可能犯了一个错误。 我的项目是一个Azure项目,所以Page.Cache是​​为每个azure实例存储数据?正确?