请求的数据库没有在连接字符串

时间:2015-10-02 17:09:08

标签: c# asp.net oracle

我正在尝试使用Oracle.ManagedDataAccess将我的C#应用​​程序连接到oracle数据库。但是,当我尝试创建数据库时,它给出了下面的错误。关于我设置错误的任何想法?我知道提供程序名称设置正确,因为我能够以与另一个C#应用程序完全相同的方式连接到数据库。

“请求的数据库ConnectionString.SomeName没有在连接字符串中设置有效的ADO.NET提供程序名称”

在machine.config上:

<add name="ConnectionString.SomeName" providerName="Oracle.ManagedDataAccess.Client" connectionString="Data Source=databaseSource;User Id=some_id;Password=some_password" />

在web.config上:

<appSettings>
  <add key="ConnectionString1" value="ConnectionString.SomeName"/>
</appSettings>

我的代码:

DatabaseProviderFactory factory = new DatabaseProviderFactory();
Database = factory.Create(ConfigurationManager.AppSettings["ConnectionString1"]);

3 个答案:

答案 0 :(得分:1)

在Machine.config中,检查以确保您有两个部分进行设置。一个在“和另一个在。下面的例子:

    <appSettings>
    <add key="ConnectionString.SomeName" value="Data Source=databaseSource;User Id=some_id;Password=some_password"/>
</appSettings>

<connectionStrings>
    <add name="ConnectionString.SomeName" connectionString="Data Source=databaseSource;User Id=some_id;Password=some_password" providerName="Oracle.DataAccess.Client"/>
</connectionStrings>

答案 1 :(得分:1)

appSettings条目中的“key”应与connectionStrings条目中的“name”匹配。 例如,在您的情况下,您应该在appSettings中使用此条目:

<add key="ConnectionString.SomeName" value="Data Source=dataSource;User ID=some_id;Password=some_password" />

答案 2 :(得分:0)

对我有用的解决方案是将以下内容添加到App.config / Web.config(在配置标记内):

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