2012-08-06 98 views
1

1解決方案。ConnectionString上的NullReference

2個項目(1.WEB - 2.三層結構)

調用存儲過程: 網絡 - > BOL - > BLL - > DAL。

DAL的方法:獲取連接字符串和執行。

public DataSet ExecuteSQL(string sp, Persona user) 
    { 
     EH eh = new EH(); // Error_Handling.cs object 
     try 
     { 
      DataSet ds = new DataSet(); 
      string connectionString = null; 
      connectionString = GetNewConnection("BO"); //HERE COMES THE ERROR 
      SqlConnection conn = new SqlConnection(connectionString); 
      using (conn) 
      { .... 

GetNewConnection()。

public string GetNewConnection(string server) 
    { 
     return ConfigurationManager.ConnectionStrings["BO"].ConnectionString; 
    } 

App.Config中片段命名所需的連接

<connectionStrings> 
<add name="BO" 
    connectionString="Data Source=Server;Initial Catalog=BO;User ID=WebUser;Password=333;Integrated Security=False" 
    providerName="System.Data.SqlClient" /> 

我從GetNewConnection()

  • $ {異常返回」當出現以下情況例外對象引用未設置爲實例「System.Exception {System.NullReferenceException}

爲什麼它得到一個空引用?

+0

** App.config **爲** web **項目?不應該是** web.config **? – Oded 2012-08-06 14:31:21

+0

BTW:在'GetNewConnection',你不應該使用'server'參數而不是硬編碼''BO「'? – 2012-08-06 14:32:28

+0

@AndreCalil是的,這是用於測試目的。 – 2012-08-06 14:37:26

回答

4

你應該有在UI項目的Web.config的ConnectionString,你WEB項目

複製ConnectionString部分,粘貼在你的Web.Config它應該工作正常

+0

但我希望它在DLL中。因爲一旦系統運行。網頁可能會在另一個位置。所以,如果Web請求去C#的一臺服務器,然後在執行SQL之前,它必須去另一臺服務器來獲取連接字符串,然後再返回到另一臺服務器來執行SQL ......這聽起來像是浪費時間。我錯過了什麼嗎? – 2012-08-06 14:33:24

+0

是 - 該DLL將作爲Web項目的一部分存放在Web服務器上 – podiluska 2012-08-06 14:34:30

+0

您將在同一臺服務器中將您的Web文件和DLL(數據訪問層項目DLL)一起部署在儀式中? Web應用程序的相同bin文件夾? – Shyju 2012-08-06 14:35:32

3

ConnectionString中應在web.config,而不是app.config

+0

請檢查評論previuos答案。 – 2012-08-06 14:34:21

+0

查看關於其他答案的回覆:) – podiluska 2012-08-06 14:35:15

+0

.......謝謝你! – 2012-08-06 15:01:17