<connectionStrings> <add name="OracleConnection" connectionString="DATA SOURCE=TNS_NAME;PASSWORD=xxx;PERSIST SECURITY INFO=True;USER ID=xxx" providerName="Oracle.ManagedDataAccess.Client" /> </connectionStrings>
但是,如果我尝试使用所有疯狂的Web.config设置运行我的Web应用程序,我收到错误“ORA-12154:TNS:无法解析指定的连接标识符”.我究竟做错了什么?为什么我的集成测试程序集的配置如此简单,Web.config如此复杂?这是我的Web.config的相关部分(取自Deploying and Configuring ODP.NET to work without installation with Entity Framework):
自定义configSection:
<configSections> <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler,Oracle.ManagedDataAccess,Version=4.121.1.0,Culture=neutral,PublicKeyToken=89b483f429c47342" /> </configSections>
相应的配置部分:
<oracle.manageddataaccess.client> <version number="*"> <edmMappings> <edmMapping dataType="number"> <add name="bool" precision="1"/> <add name="byte" precision="2" /> <add name="int16" precision="5" /> </edmMapping> </edmMappings> </version> </oracle.manageddataaccess.client>
自定义system.data节点:
<system.data> <DbProviderFactories> Remove in case this is already defined in machine.config <remove invariant="Oracle.DataAccess.Client" /> <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,PublicKeyToken=89b483f429c47342" /> </DbProviderFactories> </system.data>
EntityFramework节点:
<entityFramework> <defaultConnectionFactory type="Victoria.Data.OracleConnectionFactory,EntityFramework" /> </entityFramework>
更新1:阅读完http://docs.oracle.com/cd/E16655_01/win.121/e17732/featConfig.htm#ODPNT8161后,我尝试将我的Web.config oracle.manageddataaccess.client修改为以下内容并且可以正常工作.但是,让connectionString节点引用TNS名称和对同一TNS名称文件的此额外引用似乎不正确.
<oracle.manageddataaccess.client> <version number="*"> <dataSources> <dataSource alias="SIEBMATS" descriptor="(DESCRIPTION=(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = xxx.yyy.zzz)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = siebmats)))" /> </dataSources> <edmMappings> <edmMapping dataType="number"> <add name="bool" precision="1"/> <add name="byte" precision="2" /> <add name="int16" precision="5" /> </edmMapping> </edmMappings> </version> </oracle.manageddataaccess.client>
解决方法
connectionString =“Data Source = // SERVER:PORT / INSTANCE_NAME; USER = XXX; PASSWORD = XXX”.
这里有用的参考:
http://www.connectionstrings.com/oracle/
http://docs.oracle.com/cd/E51173_01/win.122/e17732/featConnecting.htm#ODPNT169
这对EF有问题也有帮助:
Deploying and Configuring ODP.NET to work without installation with Entity Framework
希望有所帮助.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。