Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有SQL依赖关系的c长轮询与IIS不一致_C#_Iis 7_Long Polling_Sqldependency - Fatal编程技术网

C# 具有SQL依赖关系的c长轮询与IIS不一致

C# 具有SQL依赖关系的c长轮询与IIS不一致,c#,iis-7,long-polling,sqldependency,C#,Iis 7,Long Polling,Sqldependency,客户的要求是,只要数据库中的某个特定表发生任何类型的更改,就能够在屏幕上看到刷新的数据 数据库中有一个作业表,其内容显示在浏览器的GridView中。要求是在Jobs表中发生任何更新、删除或插入时刷新网格数据 我们使用了SQL依赖和长轮询技术来实现这一点。SQL依赖项将通知asp.net数据库中的任何更改,长轮询将使gridview保持异步更新 我们在IIS 7.0中部署了此功能,并注意到了不一致的行为,即gridview大部分时间都会刷新,比如说90-95%,但有时即使DB表中的数据发生了更改

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

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

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

我们在IIS 7.0中部署了此功能,并注意到了不一致的行为,即gridview大部分时间都会刷新,比如说90-95%,但有时即使DB表中的数据发生了更改,也不会进行刷新

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

编辑:该问题似乎也发生在ASP.Net开发服务器中,并且与IIS无关。在记录消息之后,我们发现SQLDependency被中断,因为OnChange事件没有被一致触发


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

我认为您需要在项目中实现COMET或Reverse AJAX,这方面有一个很好的例子


您需要做的第一件事是检查dbo.AspNet_SqlCacheTablesForChangeNotification表。每个表都有缓存失效计数器。
如果数字是OK 100%增量没有损失,考虑检查UI层。< / P >不确定我是否正确理解你的设置。为什么需要使用SQL依赖关系和长轮询?如果您使用SQL依赖项,则根本不需要查询数据库。当数据库发生更改时,您的应用程序将收到通知。您是否尝试记录所有更改事件,以查看是否存在未触发更改的特定条件?在更改失败时,您是否已成功确定哪一块发生了损坏?是SqlDependency吗?还是长时间的投票被淘汰了?没有这些知识,这是一个不可能的问题。就我个人而言,我更倾向于web套接字和redis pub/sub。。。但我想这取决于你的缩放要求是什么。看看signalR和knockout,或者signalR和backbone,我认为这是向前跳;首先OP应该确认是长轮询失败了。。。还有很多选择,其中只有one@Marc:没错,还有其他选择,只是我的意见,这对我很好:我在我们的数据库中没有看到这个表。是因为我们没有使用SQLCacheDependency吗?是的。要启用SQL缓存依赖项,应使用aspnet_regsql实用程序。首先对数据库启用此功能,然后对所需的所有表启用此功能。你可以在