我现在正在研究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
,则可以正常使用是否有可能发生这样的行为? (或者我只是在逻辑中的任何其他地方犯了错误?)
请指出如果涉及某些配置文件。
答案 0 :(得分:0)
我可能犯了一个错误。 我的项目是一个Azure项目,所以Page.Cache是为每个azure实例存储数据?正确?