我正在尝试从我的App.config文件中检索存储在我的工作目录中的值,但是当我运行该程序时,它返回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。
答案 0 :(得分:16)
您是否确保将配置文件正确放置在运行应用程序的目录中?该目录中是否存在名为&lt; app name&gt; .exe.config的文件?
我只是在这里猜测 - 也许您在另一个项目中添加了App.Config文件,然后是您的exe汇编项目......?
顺便说一句,我将你的代码和App.Config原样复制到一个干净的项目中,这段代码对我有用。所以我会查看配置文件本身的方向,而不是代码。代码很好......
希望这有帮助,
冉
答案 1 :(得分:0)
如果所有设置都是正确的,但是如果您仍然获得空值,请检查您的app.config文件并替换如下所示的xml代码,
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>
</configuration>
现在运行您的代码,您可能会看到正确的值
答案 2 :(得分:0)
如果您的配置文件在不同的类库中使用,则必须更改您的名称 YourClasslibraryDllname.dll.config ,并且必须将配置文件 copy更改为输出目录< / strong>属性
Ex:
YourSolution
ClassLibrary_1
ClassLibrary_1.dll.config
ApplicationConfigurationReader.cs
ConfigurationConst.cs
ClassLibrary_2
ConsoleApp
添加参考->程序集-> System.Configuration
在ClassLibrary_1项目中添加以下主题
ConfigurationConst类,使用System.Configuration;
public static class ConfigurationConst
{
public static KeyValueConfigurationCollection Configs;
}
ApplicationConfigurationReader类使用System.Configuration;
internal class ApplicationConfigurationReader
{
public void Read()
{
// read assembly
var ExecAppPath = this.GetType().Assembly.Location;
// Get all app settings in config file
ConfigurationConst.Configs = ConfigurationManager.OpenExeConfiguration(ExecAppPath).AppSettings.Settings;
}
}
使用ClassLibrary_1读取配置;
static void Main(string[] args)
{
new ApplicationConfigurationReader().Read();
var Configval = ConfigurationConst.Configs["provider"].Value;
Console.ReadKey();
}
我希望您能获得干净的帮助
答案 3 :(得分:0)
如果您的调试文件夹中有 .dll,则将您的 confif 文件重命名为 yourprojectname.dll.config。这在我的情况下有效