ODP.NET 代码在 4.121 上崩溃但在 2.121 上不崩溃 - Windows 服务 - CommandBehavior.CloseConnection

ODP.NET Code Crashing on 4.121 but not 2.121 - Windows Service - CommandBehavior.CloseConnection

我有一个 Windows 服务的问题,在尝试处理以这种方式创建的 reader 时它崩溃了:

 drOra = cmdOra.ExecuteReader(CommandBehavior.CloseConnection)

处理在 Finally 块中,检查是否为 null

 If Not drOra Is Nothing Then drOra.Dispose()

即使我将其放入捕获器中,windows 服务仍然崩溃。

所以,我修改为使用 USING 语句,现在该块崩溃了。

我使用 ODP.NET 版本 2.121 而不是 4.121 临时修复了它,但希望了解为什么会发生这种崩溃。我无法获得输出,因为它不会进入 catch 块。

这是非托管提供程序。

我重构了代码以正确关闭连接和适配器并删除了 CommandBehavior.CloseConnection 引用。

一旦我这样做了,一切就开始正常工作了。