如何解决EOF BOF 不一致性.. 例外,即使 Recordset 的 RecordCount 仅在七台机器中的一台机器上超过一
我们有一个使用 .Net 4.7 作为 WebAPI 的应用程序,一些关键的业务逻辑在 VB6-COM 中。
ADODB 互操作 DLL 用于将记录集传递给 COM 对象以执行进一步的业务逻辑。
使用 SQL Server 2012R2。
下面是C#代码
Recordset recordSet;
recordSet = metaData.GetMetadata();
....
....
//This method adds two rows in iteration
FillDefaultTwoRows(recordSet);
// COM object processes the recordset and this error out with EOF BOF
// even after having minimum one row in it.
dataManager.Process(recordSet);
在调用 dataManager.Process(recordSet);
之前,如果我们调用 recordSet.MoveFirst()
应用程序不要错误输出 EOF 并且 BOF 是真的异常,否则它总是抛出 EOF BOF 是真的。
令人惊讶的是,异常出现七台机器中只有一台,我们检查 .net 版本、Windows 更新、IIS 中的工作池设置都相同。两台机器的连接字符串保持不变,ADODB、ADO和VBVM版本都一样。
相同的代码部署在两台机器上,这里是每台机器的日志
机器 A:收到的 ADODB.Recordset 有 BOF=False 和 EOF=False
机器 B:收到的 ADODB.Recordset 有 BOF=False 和 EOF=True
机器 B 面临异常,而机器 A 没有。
我们最大的问题是什么让这个记录位置重置?
是否需要任何系统级别/全局配置或设置来解决此异常而无需更改代码?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。