webForumDet fria alternativet

SQLCacheDependency

3 svar · 355 visningar · startad av Bjuris

BjurisMedlem sedan juli 2001542 inlägg
#1

Håller på och kollar lite på sqlCacheDependency men det verkar som att min cache alltid är null och en fråga ställs mot databasen.

protected void Timer1_Tick(object sender, EventArgs e)
    {
        
        if (Cache["TitleCount"] != null)
        {
            count = (int)Cache["TitleCount"];
            lblMessageLog.Text = "Cache ";
        }
        else
        {
            string connectionString = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"];
            SqlConnection con = new SqlConnection(connectionString);
            SqlCommand cmd = new
              SqlCommand("SELECT Count(*) FROM webDOC_FWB", con);
            con.Open();
            count = (int)cmd.ExecuteScalar();
            con.Close();
            Cache.Insert("TitleCount", count,
              new SqlCacheDependency("webDOC", "webDOC_FWB"));
            lblMessageLog.Text = "Database ";
        }
        lblMessageLog.Text += "Updated:  " + System.DateTime.Now.ToString() +"<br>" + count.ToString();

Någon som ser vad jag gjort för fel?
jag får alltså ut texten: Database updated även fast det inte finns några ändringar i databasen.
Den ligger i en ContentPlaceHolder med masterpages.

emissionMedlem sedan dec. 19996 095 inlägg
#2

Har du definierat databasen i web.config:s sqlCacheDependency-del? Kört Aspnet_regsql.exe? Anar att du använder SQL Server 2000, eftersom du annars bör använda en SqlCacheDependency med SqlCommand i konstruktorn.

BjurisMedlem sedan juli 2001542 inlägg
#3

Kör 2005:an (skall jag ha någon annan konstruktor då?)
edt. det stämmer att jag kör 2000 (eller ver 8), kör en instans av 2005:an lokalt på min maskin men just i detta fall så kör jag mot en annan server (blandat ihop det lite)

Har kört aspnet_regsql

min web.config:

<caching>
      <sqlCacheDependency enabled = "true" pollTime = "1000" >
        <databases>
          <add name="webDOC"
            connectionStringName="webDOCConnectionString"
            pollTime = "1000"
            />
        </databases>
      </sqlCacheDependency>
    </caching>
BjurisMedlem sedan juli 2001542 inlägg
#4

Denna fungerar nu för mig.

SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]);
                SqlCommand command = new SqlCommand("SELECT Count(*) FROM MessageLog", connection);
                SqlCacheDependency dependency = new SqlCacheDependency("webDOC", "MessageLog");
                connection.Open();
                count = (int)command.ExecuteScalar();
                connection.Close();
                Cache.Insert("MessageLogCount", count, dependency);
129 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
127 ms — hämta tråd, inlägg och bilagor (db)