【问题标题】:Oracle connection string in web.config throwing errorweb.config 中的 Oracle 连接字符串抛出错误
【发布时间】:2015-08-11 00:57:40
【问题描述】:

我的 Web.config 中有以下连接字符串:

<add name="OracleString" providerName="System.Data.OracleClient" ConnectionString ="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort))(CONNECT_DATA=(SERVICE_NAME=MyOracleSID)));uid=myUsername;pwd=myPassword;"/>

当我尝试使用以下代码检索相同内容时

ConnectionStringSettings connectionStringSettings = ConfigurationManager.ConnectionStrings["OracleString"];

DbProviderFactory factory = DbProviderFactories.GetFactory(connectionStringSettings.ProviderName);

DbConnection conn = factory.CreateConnection();
//set the connection string
conn.ConnectionString = connectionStringSettings.ConnectionString;

抛出异常:

不支持关键字:描述

【问题讨论】:

  • 我的错误我没有复制connectionString属性-发布问题时.....但事实并非如此
  • Oracle 客户端的 Microsoft 版本已被弃用一段时间。现在首选 Oracle 的 ODP.Net 客户端(参考 Marcos Lommez 的回答)。

标签: c# asp.net asp.net-mvc


【解决方案1】:

模式和标准是一个很棒的想法。

尝试将您的连接字符串更改为Microsoft's Documentation 中所示的内容,我相信它会起作用

在你的情况下,我认为这可以解决问题:

<add name="OracleString"
  connectionString="Server=tcp:MyHost,MyPort;Database=MyOracleSID;UserID=myUsername;Password=myPassword"
  providerName="System.Data.OracleClient" />

编辑: 经过一番研究,我发现您使用的连接类型可能适用于 oracle,但是我相信您在描述之前忘记了数据源或服务器,这样的事情应该可以解决问题

<add name="OracleString" providerName="System.Data.OracleClient" ConnectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort))(CONNECT_DATA=(SERVICE_NAME=MyOracleSID)));uid=myUsername;pwd=myPassword;"/>

Resource

【讨论】:

【解决方案2】:

Coder2014,几天前我的 web.Config 出现问题。将 connectionString 粘贴到 web.config 时,该字符串使用了不同的编码。 为了验证这一点,我使用了http://www.xmlvalidation.com/ 来验证文件。

如果不是你的情况,也许你应该使用 tnsnames.ora。看看https://www.connectionstrings.com/oracle-data-provider-for-net-odp-net/

【讨论】:

    【解决方案3】:

    基于错误消息格式的类似帖子

    不支持关键字______

    问题似乎在于引擎无法识别“描述”是什么(在连接字符串的开头)。

    我不认为你的连接字符串应该是这样的。 您复制并粘贴了 TNSnames.ora 中的内容。

    一个oracle连接字符串的例子是:

    <add name="oracleConnectionString"
         connectionString="Server=yourDBServer; User ID=userIdToConnectWith; Password=userIdPassword; Unicode=True"
         providerName="System.Data.OracleClient" />
    

    从您上面的示例中,我不确定 - 但我认为“MyOracleSID”会代替“yourDBServer”。

    【讨论】:

    • 当我使用上述方法时 - 出现异常 - ORA-12541: TNS:no listener
    • 你能以任何其他方式连接到这个数据库吗? Sql 加?蟾蜍/PL/SQL 开发者?
    • 我可以连接到 sql developer
    • 您有一个正在尝试连接的 oracle 数据库。您是否以任何方式成功连接到它?你知道它的服务器名称吗?
    • 如果是这样,您连接到的 Oracle DB 的名称是什么,无论您何时成功连接?您需要在Server=______ 的连接字符串中使用相同的名称。如果您通过 GUI 程序成功连接到它,那么服务器应该已经启动并且接收 ORA-12541 没有意义
    猜你喜欢
    • 1970-01-01
    • 2017-12-19
    • 2013-04-13
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多