SqlDependency缓存依赖问题……
我想用GridView显示一个表中的数据,并缓存,当这个表中数据发生变化时,缓存能自动检测并更新GridView中的显示,数据库使用Sql   Server   2005,利用asp.net   2.0中的SqlDependency应该是可以实现的,但我试了好久都不能成功,代码如下: 
 protected   void   Page_Load(object   sender,   EventArgs   e) 
             {                                                 
                         InitDependency(); 
                         this.Label1.Text   =   DateTime.Now.ToString();                      
             } 
             public   static   readonly   string   connectionstring   =   @ "Data   Source=(local);Initial   Catalog=db1;Integrated   Security=sspi "; 
             public   static   readonly   string   sql   =    "select   id,title,adduser   from   dbo.article "; 
             private   static   SqlDependency   dep; 
             private   static   SqlCommand   cmd; 
             public   void   InitDependency() 
             { 
                         using   (SqlConnection   conn   =   new   SqlConnection(connectionstring)) 
                         { 
                                     conn.Open(); 
                                     cmd   =   new   SqlCommand(sql,   conn); 
                                     dep   =   new   SqlDependency(cmd); 
                                     dep.OnChange   +=   new   OnChangeEventHandler(DependencyChanged);                                  
                                     this.GridView1.DataSource   =   cmd.ExecuteReader();; 
                                     this.GridView1.DataBind(); 
                         } 
             } 
             public   void   DependencyChanged(object   caller,   SqlNotificationEventArgs   e) 
             { 
                         this.Title   =   e.Type.ToString(); 
                         InitDependency(); 
             }
------解决方案--------------------步骤一:在SQL Server 2005上执行ALTER DATABASE  <DatabaseName>  SET ENABLE_BROKER;语句让相应的数据库启用监听服务,以便支持SqlDependency特性。   
   这条语句最好在数据库未执行任何事务的情况下执行。   
   步骤二:调用SqlDependency.Start(String strConnectionString)方法,在应用程序端启用依赖监听器。   
   该方法的参数为一个数据库的连接字符串,该数据库必须已经执行过步骤一的操作。   
   对于同一连接字符串,若已经执行过该语句,再次执行不会发生任何异常,但返回值会为False.   
   如果是在Web程序中使用,建议可以将该语句放在Application_Start事件中执行。   
   监听是基于数据库的,而依赖才可以基于表或者查询。   
   步骤三:该步骤分别有两种不同的做法。该阶段必须注意步骤。   
   方法A:建立连接对象,再创建一个SqlCommand实例,创建SqlCacheDependency实例,在这步之后再调用Command对象来获取数据(这个顺序很重要)。之后调用Cache的Insert语句建立一个依赖于一个具体查询数据集的Cache项。   
 SqlConnection conn = new SqlConnection(strConnection);