SQLDependency 不更新

SQLDependency does not update

我已经使用 Microsoft 指南创建了一个使用 sqldependency 的测试 web 应用程序。 对于我的数据库,我使用的是 Northwind 数据库。似乎依赖项不起作用,因为我期待对 table 和标签进行即时更新。 此外,代理已启用。

这里是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Web.Caching;


namespace WebDependency
{
public partial class Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = "Cache Refresh: " + DateTime.Now.ToLongTimeString();

        SqlDependency.Start(GetConnectionString());

        using (SqlConnection connection = new SqlConnection(GetConnectionString()))
        {
            using (SqlCommand command = new SqlCommand(GetSQL(), connection))
            {
                SqlCacheDependency dependency = new SqlCacheDependency(command);

                int numberOfSeconds = 3;
                DateTime expires = DateTime.Now.AddSeconds(numberOfSeconds);

                Response.Cache.SetExpires(expires);
                Response.Cache.SetCacheability(HttpCacheability.Public);
                Response.Cache.SetValidUntilExpires(true);

                Response.AddCacheDependency(dependency);

                connection.Open();

                GridView1.DataSource = command.ExecuteReader();
                GridView1.DataBind();
            }
        }
    }
    private string GetConnectionString()
    {
        return "Data Source=(LocalDB)\MSSqlLocalDB;Initial Catalog=Northwind;Integrated Security=True";
    }

    private string GetSQL()
    {
        return "Select CategoryName, Description from dbo.Categories";
    }
}
}
  1. 您需要在 global.asa
  2. 的 Application_Start 中启动 sqlDependency
  3. 您没有触发器实际触发时的事件处理程序。

这是我认为您正在寻找的完整示例。

Polling for database changes: SqlDependency, SignalR is Good