客户的要求是,只要数据库中的特定表发生任何类型的更改,就能够在屏幕上看到刷新的数据。
我们在数据库中有一个 Job 表,其内容显示在浏览器的 GridView 中。要求是在 Jobs 表中发生任何更新、删除或插入时刷新网格数据。
我们使用 SQL 依赖和长轮询技术来实现这一点。SQL 依赖将通知 asp.net 数据库中的任何更改,长轮询将保持 gridview 异步更新。
我们在 IIS 7.0 中部署了它,并注意到不一致的行为,即 gridview 大部分时间都会刷新,比如 90-95%,但有时虽然 DB 表中的数据已更改,但刷新不会发生。
有没有人遇到过这个问题?IIS 中是否需要为此进行任何特定配置?我确实在几个地方读到了 IIS 不能为彗星编程进行扩展。上述场景发生在只有一个用户的测试环境中。任何帮助将不胜感激。提前致谢。
编辑:该问题似乎也发生在 ASP.Net 开发服务器中,而不是与 IIS 隔离。记录消息后,我们发现 SQLDependency 是由于 OnChange 事件未一致触发而中断的原因。
编辑 2:当我运行查询时,select * from sys.dm_qn_subscriptions
我得到了同一通知订阅的几行,即重复订阅。只有 id 列不同。这可能是一个原因吗?如果是,为什么我会得到重复的订阅行?如何从 ASP.NET 终止订阅?