2011-01-09 101 views
0

我使用NHibernate與Web應用程序和Oracle 10g XE,目前我得到了以下錯誤:NHibernate的連接字符串問題

ORA-06413: Connection not open.

我的猜測是它與我的連接字符串的問題。下面是我的Web.config Hibernate配置:

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
    <session-factory name="MyProject.MyAssembly"> 
     <property name="connection.driver_class">NHibernate.Driver.OracleClientDriver</property> 
     <property name="connection.connection_string">Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)));User ID=myid;Password=mypassword</property> 
     <property name="show_sql">true</property> 
     <property name="dialect">NHibernate.Dialect.Oracle10gDialect</property> 
     <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property> 
     <property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property> 
     <mapping assembly="Domain" /> 
    </session-factory> 
</hibernate-configuration> 

我使用下面的連接字符串也試過:

<property name="connection.connection_string"> 
    User ID=myid;Password=mypassword;Data Source=localhost 
</property> 

這導致以下錯誤:

ORA-12154: TNS:could not resolve the connect identifier specified.

任何人都可以提供任何見解,我可能在這裏做錯了嗎?

編輯

我創建了相同的解決方案中一個控制檯應用程序項目。我創建了一個具有相同設置的hibernate.cfg.xml文件,並將其添加到該項目中。我可以堅持沒有問題的對象。

我已經將數據庫從Oracle 10g切換到MySQL,並且它在Web應用程序中正常工作。爲什麼Oracle 10g只能在控制檯應用程序中運行,而不能在Web應用程序中運行?

+0

看看這個:http://www.dba-oracle.com/t_ora_06413_connection_not_open.htm – Falcon 2011-01-09 22:31:04

回答

1

顯然,Oracle 10g在64位系統上有點挑剔。最好的選擇似乎是切換到MySQL。

0

我今天遇到這個錯誤,發現有趣的事情。 我試圖用XE客戶oracle.dataaccecc.dll作爲參考及本聲明

 sessionFactory = new NHibernate.Cfg.Configuration().Configure(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "NHibernate\\Oracle.cfg.xml")).BuildSessionFactory(); 
     

之前,我進入了這幾行:

 
OracleConnection conn = new OracleConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["connString"].ConnectionString); 
      conn.Open(); 
conn.Close(); 

所有的一切都開始工作。