有人可以告訴我爲什麼這不會工作嗎?如果我把測試函數放到後面的代碼中,它可以正常工作。如果我把它放到測試類中,數據總是一無所獲。緩存共享類中的數據
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
ASPxGridView1.DataSource = TestClass.Test()
ASPxGridView1.DataBind()
ASPxLabel1.Text = Now
End Sub
End Class
Public Class TestClass
Public Shared Function Test() As DataTable
Test = DirectCast(HttpContext.Current.Cache("Test"), DataTable)
If Test Is Nothing Then
Dim sql As String = "SELECT field1,field2,field3 FROM test "
Using conn As New SqlConnection(Materials.Conn)
Using cmd As New SqlCommand(sql, conn)
Dim dep As New SqlCacheDependency(cmd)
Test = New DataTable
conn.Open()
Test.Load(cmd.ExecuteReader(CommandBehavior.CloseConnection))
HttpContext.Current.Cache.Insert("Test", Test, dep, Cache.NoAbsoluteExpiration, TimeSpan.FromHours(24))
End Using
End Using
End If
End Function
End Class
你嘗試過傳遞null而不是那個「dep」嗎? – 2012-01-30 16:54:28
HttpContext對象是否存在於測試類中的任何有意義的意義上,即那些存在於非常難以測試的ASP.NET WebForms中的醜陋框架對象之一。 – 2012-01-30 16:57:27
這工作,但我想有依賴。我想那麼我的問題是爲什麼不會在共享函數緩存依賴工作。 – jocoder 2012-01-30 16:59:40