gpt4 book ai didi

c# - Oracle ManagedDataAccess - 连接请求超时 - 池化

转载 作者:太空狗 更新时间:2023-10-29 21:01:25 27 4
gpt4 key购买 nike

我终于认输并寻求帮助。我想尽办法解决这个问题,但我似乎无能为力。

我正在与:VS2010 C#甲骨文 12cODP.Net 托管121012

我继承了一个同时使用托管和非托管数据访问 dll 的应用程序。在我卸载 oracle 之前,它一直在工作。然后我为 64 位机器重新安装了 11g 客户端。我马上注意到只安装了 framework 2 的 dataaccess dll,但我还是继续了。然后,我将 client_1 文件夹中的所有 oci 和 ora dll 复制到我的应用程序的 bin 目录中,并将 Oracle.DataAccess.dll 也复制到我的 bin 目录中。我还将 Oracle.ManagedDataAccess.dll 复制到此文件夹中。

只要我没有更改数据集上的任何内容,我的应用程序就会成功运行。我会很高兴地继续这样下去,除非我必须创建更多的数据集。当我尝试添加新数据集时,我的数据源连接向导下拉列表是空白的。然后我尝试重新创建连接,但只能看到 .Net Framework DProviders。我看不到托管提供程序。在某些时候,我也遇到了这个错误“当前没有选择数据提供者”。

认为是因为未安装托管提供程序,我卸载了 11g 客户端并安装了 64 位 12c 客户端,并将所有相关文件复制到我的应用程序的 bin 中。我将以下行添加到我的 app.config 文件中:

      <configSections>
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess" />

  <system.data>
<DbProviderFactories>
<remove invariant="Oracle.DataAccess.Client" />
<remove invariant="Oracle.ManagedDataAccess.Client" />
<add name="ODP.NET, Managed Driver" invariant="Oracle.DataAccess.Client"
description="Oracle Data Provider for .NET, Managed Driver"
type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>

在此之后,我现在可以看到一些旧数据源,但我无法连接到我的数据库,因为我收到“连接请求超时”消息。当我手动创建新连接时,我可以很好地与非托管提供程序连接,但出现连接请求超时错误。

我真的已经筋疲力尽了,在我使用绳索之前真的很感激新的眼睛。

提前致谢。

最佳答案

切换到托管驱动程序后,我遇到了同样的问题。甚至使用 native 和托管驱动程序编写了一个测试应用程序。结论是托管驱动程序需要比 native 驱动程序更多的时间来打开新连接。对我们有用的解决方案是使用连接字符串设置较大的连接超时。

<connectionStrings>
<add name="ConnectionString" connectionString="data source=xxxx;user id=xxxx;password=xxxx;persist security info=false;Connection Timeout=120;" />

</connectionStrings>

关于c# - Oracle ManagedDataAccess - 连接请求超时 - 池化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30955745/

27 4 0