c# Long Polling with SQL dependency with IIS Inconsistent

标签 c# iis-7 long-polling sqldependency

客户的要求是只要数据库中的特定表发生任何类型的更改,就能够在屏幕上看到刷新的数据。

我们在数据库中有一个作业表,其内容显示在浏览器的 GridView 中。要求是在 Jobs 表中发生任何更新、删除或插入时刷新网格数据。

我们使用了 SQL 依赖和长轮询技术来实现这一点。 SQL 依赖项将通知 asp.net 数据库中的任何更改,长轮询将保持 gridview 异步更新。

我们在 IIS 7.0 中部署了它,并注意到不一致的行为,即 gridview 大部分时间都会刷新,比如 90-95%,但有时虽然数据库表中的数据已更改,但刷新不会发生。

有人遇到过这个问题吗?为此,IIS 中是否需要任何特定配置?我确实在少数地方读到 IIS 不适合 cometd 编程。上述场景发生在只有一个用户的测试环境中。任何帮助将不胜感激。提前致谢。

编辑: 这个问题似乎也发生在 ASP.Net 开发服务器中,而不是 IIS 所独有的。记录消息后,我们发现 SQLDependency 是中断的原因,因为 OnChange 事件未被一致触发。

编辑 2: 当我运行查询 select * from sys.dm_qn_subscriptions 时,我得到几行相同的通知订阅,即重复订阅。只有 id 列不同。这可能是一个原因吗?如果是,为什么我会得到重复的订阅行?如何终止 ASP.NET 的订阅?

最佳答案

我相信你的需求是在你的项目中实现COMET-or-Reverse-AJAX
有一个很好的例子

http://www.codeproject.com/Articles/34562/COMET-or-Reverse-AJAX-based-Grid-Control-for-ASP-N

关于c# Long Polling with SQL dependency with IIS Inconsistent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12160984/

相关文章:

php - 这是长轮询( cometd 编程)的正确方法吗

c# - 我可以使用哪些方法来检测机器人?

asp.net-mvc - 对静态文件的请求正在命中 ASP.NET MVC3 中的托管代码

asp.net - 无法在 Web 服务器上启动调试。无法启动 ASP.NET 调试 VS 2010、II7、Win 7 x64

ember.js - 使用 EmberJS/Ember-Data 进行长轮询?

javascript - 如何向公众公开 Google Analytics 实时活跃用户

c# - Lambda 表达式和搜索

C# 为对象列表创建 Mock Configuration.GetSection (“Section:SubSection” )

c# - 分开一个长字符串

.svc 上具有工厂属性的 WCF 服务在 Web 服务器 (IIS6) 上不起作用,但在本地使用 IIS7?