我在使用 SQL Server 通知时遇到问题。我正在 ASP.net 中开发一个 Web 应用程序,其中一个页面需要收到有关 SQL Server 数据库中一个表中的新条目的通知。我正在使用 SQL Server 通知服务和 Signal R 来实现此功能。我的网页似乎可以正常工作,获取有关新数据条目的更新。
刷新使用通知的页面时会出现问题。我发现数据库中单个条目的通知数量会随着刷新次数而增加。因此,如果我三次刷新页面,我会收到 3 个通知以获取一个条目。当连接的用户数量增加时,我有点担心这是否会给服务器带来负担。此外,如果在处理使用新条目更新页面的请求时出现错误,用户会收到多条具有相同文本的错误消息。我尝试调试我的代码,发现 SqlDependency
的 on change 事件使用的对象每次都会以不同的 ID 多次触发。以下是我的代码使用通知所做的简要概述 -
enable_broker
为数据库设置。 global.asax
, 我正在使用 application_start
和 application_stop
开始和停止的事件SqlDependency
. SqlDependency
页面加载对象时使用命令对象来监视表的确切数据字段。 onchange
的 SqlDependency
对象触发,我正在使用 Signal R 集线器类通知 UI。然后我删除 OnChange
SqlDependency
的处理程序对象,请调用 SqlDependency.Stop(connectionstring)
, 设置 SqlDependency
不反对,请调用SqlDependency.Start(connectionstring)
最后设置SqlDependency
再次使用命令对象更新数据。这整个设置为nothing-stop-start-reset 对象是为了继续监视数据的变化。 上述步骤工作正常,但是当我刷新页面时,这些步骤会重复刷新次数。我通过更改代码和调试尝试了很多东西,但似乎没有任何解决问题的方法。现在我想知道它是否是我错过的某个地方。
请帮我解决这个问题。如果需要任何其他信息,如环境、编码细节等,也请告诉我。
问候,
坦迈
最佳答案
这可能是由连接池引起的。它为池中打开的每个连接重新发出通知。您可以通过更改连接字符串属性取消此特定服务的池:
Pooling = False;
关于sql - 页面刷新时 ASP.Net Web 应用程序中的多个 SQL 通知问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21448204/