2010-12-01 101 views
12

我想从我的App.config文件中检索存储在我的工作目录中的值,但是当我运行程序时它返回null。我非常困惑,为什么会这样,并且多次查看代码以试图发现错误。ConfigurationManager返回null而不是字符串值

这里是我的App.config文件中的代码:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
    <add key="provider" value="System.Data.SqlClient" /> 
    </appSettings> 
    <connectionStrings> 
    <add name="connection" connectionString="Data Source=(local)\SQLEXPRESS;Initial Catalog=Autos;Integrated Security=True;Pooling=False" /> 
    </connectionStrings> 
</configuration> 

这里是我的C#代码:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Configuration; 
using System.Data; 
using System.Data.Common; 

namespace DataProviderFun 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     string p = ConfigurationManager.AppSettings["provider"]; 
     string c = ConfigurationManager.ConnectionStrings["connection"].ConnectionString; 

     ... 

当我运行这段代码,P = NULL和c = NULL。

我引用了System.Configuration.dll。

+2

是您的app.config被正确部署可执行.. IE:在执行目录中确实存在一个'应用程序名称。 exe.config`文件? – 2010-12-01 23:21:43

+1

App.Config是使用的模板。真正的配置文件将是“Program.Exe.Config”文件。这应该在编译项目时完成。 – 2010-12-01 23:22:15

回答

15

您是否确保将配置文件正确放置在您运行应用程序的目录中?该目录中是否有一个名为<的应用程序名称> .exe.config?

我只是在这里猜测 - 也许你在不同的项目中添加App.Config文件,然后你的EXE程序集项目......?

顺便说一句,我将你的代码和App.Config照原样拷贝到一个干净的项目中,并且这段代码适合我。所以我会看看配置文件本身的方向,而不是在代码中。该代码是好的...

希望这有助于

相关问题