ConfigurationManager.AppSettings返回null

时间:2011-07-07 06:21:31

标签: c# .net

我正在使用ConfigurationManager.AppSettings [myKey]从我的Windows应用程序中的app.config文件中读取一个值,但返回的值始终为null,即使该键存在并且它有一个值,Deas任何人都知道为什么呢?

由于

4 个答案:

答案 0 :(得分:19)

一种可能更容易的选择是使用设置文件。这将App.config值的创建和维护封装在设计器GUI中,并生成用于访问值的代码。

要添加设置文件,请在VS中右键单击您的项目,然后点击“添加 - > New Item',选择'设置文件'并为其指定一个有意义的名称,例如MainSettings.settings。然后,您可以添加一个项目,例如Foo,指定它是应用程序还是用户范围,定义它的类型并为其赋值。在您的代码中,您可以通过简单编写MainSettings.Default.Foo来恢复价值。

编译后,您可以通过编辑配置文件来更改值。设置如下: -

<applicationSettings>
    <YourNamespace.MainSettings>
        <setting name="Foo" serializeAs="String">
            <value>Bar</value>
        </setting>
    </YourNamespace.MainSettings>
</applicationSettings>

答案 1 :(得分:9)

很难说你在这里提供的内容:

  1. 检查myKey中值的拼写
  2. 确保您正在查看正确的app.config - 如果此调用位于引用的库中,并且您希望某个值来自调用项目的app.config,但您的库由于某种原因而有app.config它可能会导致你的问题。

答案 2 :(得分:0)

我的解决方案中有两个项目我首先在类库项目中添加app.config文件,所有实例都是从控制台应用程序调用的,我在类lib项目的配置文件中添加了这些条目

<appSettings> 
<add key="userName" value="user2" /> 
<add key="emilsLimit" value="50" /> 
</appSettings>

当我在类库项目中的类中获取这些异常时抛出null异常但是当我从类库项目中删除app.config并在Console项目中添加它时它工作。欢呼

注意:类lib项目引用已添加到控制台

答案 3 :(得分:0)

我遇到了同样的问题,但是当我在末尾添加一个空字符串(+“”)时,它会在appsettings中拾取字符串

例如

string s = ConfigurationManager.AppSettings["myKey"] + "";