2012-08-06 92 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