2014-01-30 138 views
1

我有两个项目。一个是web &另一个是windows窗体。 Web项目连接到数据库,但windows项目抛出一个异常NullReferenceException读取连接字符串。NullReferenceException尝试读取连接字符串

我使用相同的类来连接两个项目。连接使用LINQTOSQL建立。

这里是我的连接字符串:

<connectionStrings> 
    <add name="GPSystemConnectionString" 
     connectionString="Data Source=.;Initial Catalog=GPSystem;User ID=***;Password=***" 
     providerName="System.Data.SqlClient" /> 
</connectionStrings> 

这是怎么了我读它。

string CS = ConfigurationManager.ConnectionStrings["GPSystemConnectionString"].ConnectionString; 

(此线路上出现异常).....(未将对象引用设置到对象的实例。)

注:我使用同一个类两个项目连接...一个连接,但另一个连接失败。

请任何人帮我这个!

预先感谢您。

+2

你需要有适当的进入app.config(对于WinForms)*和* web.config(对于Web项目) - 为执行程序集*读取这些配置,并*不共享*。 – user2864740

+0

@ user2864740:可以共享它们。看到我的答案。 –

+0

@PatrickHofman你的回答真的只是窃取配置;-) – user2864740

回答

4

您需要在app.config中输入窗口应用程序中的连接字符串。

如果您没有App.Config文件,请将其添加。

,并把进入像下面

<?xml version="1.0"?> 
<configuration> 
    <connectionStrings> 
    <add name="GPSystemConnectionString" connectionString="..." /> 
    </connectionStrings> 
</configuration> 

在您cs文件

using System; 
using System.Configuration; 
using System.Data; 
using System.Data.SqlClient; 
using System.Windows.Forms; 

var connectionString=ConfigurationManager.ConnectionStrings["GPSystemConnectionString"].ConnectionString; 
1

如果你想get the configuration section from another assembly使用:

Assembly assembly = ...; /* get the assembly to read config from */ 

System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(assembly.Location); 

string CS = configuration.ConnectionStrings["GPSystemConnectionString"].ConnectionString; 
+0

这可以用来从WinForms应用程序(而不是另一个应用程序的'app.config')访问'web.config'吗?我以前从未使用过。 – user2864740

+0

@ user2864740:OP说它共享类,所以我想它也共享一个通用程序集。在这种情况下,这是一个体面的解决方案它也可以读取web.config,但你需要WebConfigurationManager。 –

0

在我的情况下,这个问题是由于ConnectionString在我的64位Machine.Config

C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\Config

而不是标准的32位

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Config

要纠正删除身高项目属性的生成选项卡上的32位设置 Build tab of Project

相关问题