有人可以告诉我为什么这不会工作吗?如果我把测试函数放到后面的代码中,它可以正常工作。如果我把它放到测试类中,数据总是一无所获。缓存共享类中的数据
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