Sql server SQL Server数据库中的AJAX更新:返回的值不正确

Sql server SQL Server数据库中的AJAX更新:返回的值不正确,sql-server,ajax,sqldatareader,Sql Server,Ajax,Sqldatareader,我有一个ASP.NET报告界面,显示从SQL Server后端返回的多个值。登录后,浏览器页面永远不会被重新加载,但几个屏幕区域会通过AJAX调用在计时器上更新 我的问题是,屏幕区域间歇性地显示来自以前AJAX调用的值。我已经深入彻底地调查了这个问题好几天了,但我还不能明确指出是什么导致了它,或者如何完全克服它。目前,不正确的值非常罕见(比如说50000分之三),但我应该不会得到任何结果!以下是有关设置的一些详细信息: 屏幕刷新计时器每30秒运行一次,以更新所有屏幕区域 屏幕区域更新之间有1.

我有一个ASP.NET报告界面,显示从SQL Server后端返回的多个值。登录后,浏览器页面永远不会被重新加载,但几个屏幕区域会通过AJAX调用在计时器上更新

我的问题是,屏幕区域间歇性地显示来自以前AJAX调用的值。我已经深入彻底地调查了这个问题好几天了,但我还不能明确指出是什么导致了它,或者如何完全克服它。目前,不正确的值非常罕见(比如说50000分之三),但我应该不会得到任何结果!以下是有关设置的一些详细信息:

  • 屏幕刷新计时器每30秒运行一次,以更新所有屏幕区域
  • 屏幕区域更新之间有1.5秒的延迟
  • 用于确定要运行哪个SQL存储过程以从数据库中获取每个屏幕区域的正确值的值被正确地传递到ASP.NET接口-我100%确定地知道要运行哪个存储过程
  • 存储过程将其值返回给SQLDataReader
  • 有时是阅读器生成的值似乎是从以前的AJAX交互中“缓冲”出来的,也就是说,我使用正确的变量运行正确的存储过程,但返回的值不是我在SQL查询接口中运行完全相同的命令时得到的值——它们是以前调用的结果
  • SQL连接、命令和读取器都会为每次交互重新创建和实例化,并在使用后通过IDisposable接口正确处理
  • 我将阅读器换成了数据集,结果没有差异
  • 我的AJAX调用是同步的(async=false),因此每次调用都应该在下一次运行之前完成,但我的屏幕区域更新之间有1.5秒的延迟,循环之间有30秒的延迟,因此它们在任何情况下都不应该相互冲突
令人沮丧的是,读者在运行SQL语句时没有抛出异常,但似乎返回了以前交互的结果——而且很少返回,但一个错误的结果就是一个过多的结果

我根本没有使用ASP.NET状态管理-在web.config中关闭


我缺少什么?

使用sql server配置文件配置到达sql server的sql语句。这样可以缩小bug的潜在位置。接下来,启动fiddler http调试器并验证http请求。让我们知道你发现了什么

读者有时会感到困惑 产生的价值似乎是 从以前的AJAX中“缓冲” 交互,即我正在运行 使用正确的 变量,但返回的值是 如果我跑得那么准,我就得不到 SQL查询接口中的相同命令 -它们是以前调用SQL连接、命令和 读者都是被创造出来的 为每个 相互作用并正确处理 通过IDisposable使用后 接口我已经交换了读卡器 对于数据集,在 结果


在这里向我们展示你的代码会有帮助。如果数据对象包含错误的值,则必须确保在后端运行正确的SP,并且在适用的情况下,向后端传递正确的参数。您应该能够在Visual Studio调试器中单步执行该调用。

经过多次搜索,我们确定该问题与ADO.NET数据提供程序的此问题有关:。它是池和线程的组合(在我们的例子中,不是由我们管理,而是由IIS管理),这导致了这个非常、非常、非常严重的缺陷结果。我们仍在进行可接受的变通。