ConfigurationManager.AppSettings变为null?

时间:2010-11-25 21:31:00

标签: c# asp.net web-config

我没有意识到:'在单独的类库中有一个web.config,'正在从不同的Web应用程序中读取web.config应用程序设置。

我正在使用VS2010目标框架3.5

我不知道这里出了什么问题,但是当我试图null

时我得到了ConfigurationManager.AppSettings["StoreId"];
private string _storeid = GetStoreId;

public static string GetStoreId
{
    get
    {
        return ConfigurationManager.AppSettings["StoreId"];
    }
}

的web.config:

<appSettings>
    <add key="StoreId" value="123" />
</appSettings>

14 个答案:

答案 0 :(得分:30)

如果您 UNIT TESTING ,您需要 UNIT TEST PROJECT APP.CONFIG A COPY

答案 1 :(得分:29)

您上面发布的代码是否使用单独的类库到您的主asp.net库?

如果您是,并且已使用上面发布的设置将app.config添加到此库,则ConfigurationManager不会读取正确的文件,因为这将查看您的asp.net库的web.config文件。

答案 2 :(得分:13)

我知道这已经老了,但我一直回到这里:(

通常的原因是由于背景原因。

假设你有一个带有VSTO加载项项目和类库项目的解决方案,如果App.Config在类库中它不会工作,因为正在运行的应用程序的上下文是VSTO加载项项目。要从配置中读取值,您需要将配置文件移动到具有上下文的项目中。

如果您不熟悉VSTO假装我编写了ASP.Net项目而app.config编写了web.config。

解决方案

一个漂亮的解决方案是在其他项目中添加配置文件快捷方式,因此您只需更新一个文件: enter image description here

类似于按照答案#2分享汇编文件:https://stackoverflow.com/a/15319582/495455

答案 3 :(得分:6)

<appSettings>
    <add key="StoreId" value="123" />
</appSettings>

位于ASP.NET应用程序的web.config文件中,而不是在Visual Studio中添加到类库项目的某些app.config文件中,对吧?如果是这种情况,你不可能得到null。如果您已将此添加到Visual Studio中的app.config类库项目中,则获取null是完全正常的行为。

答案 4 :(得分:5)

免责声明;)这篇文章不是为了回答OP,因为为时已晚,但绝对有助于结束此页面的读者。

我遇到的问题ConfigurationManager.AppSettings["uName"]在我的C#web api项目中返回null

我检查过的基本事项

1)在代码ConfigurationManager.AppSettings["uName"]中,我使用了uName文件中的确切密钥“web.config”,

<appSettings>
      <add key="uName" value="myValue" />
</appSettings>

已选中我没有误输入而不是userName等。

2)由于它是一个 Web API 项目,它的文件为uName而不是web.config,而根文件夹你的项目。 [参考图片]。

enter image description here

解决方案

对我有用的解决方案,

已将 app.config更改为ConfigurationManager.AppSettings["uName"]

确保我有

WebConfigurationManager.AppSettings["uName"]
右侧文件中的

右侧文件<视图文件夹

web.config

既不调试或发布web.config

enter image description here

答案 5 :(得分:2)

我刚刚得到了答案DLL是从另一个项目中调用的,而不是在app.config中有create.so条目的项目应该转移到调用项目配置文件。

例如我在我的解决方案中有2个项目,一个类库和其他控制台application.i在Console应用程序中添加了类库引用。如果我在类库项目中添加app.config文件,它通过null exception.it工作时我在控制台应用程序中添加了app.config.Hope it works

答案 6 :(得分:1)

应用程序设置已加载到ConfigurationManager.AppSettings中,但用户设置(在项目属性的“属性”设置中)不是。

答案 7 :(得分:1)

我同意以上答案,我想再补充一点

  1. 您应确保不要在前后放置空格: 参见下面的代码:

    private static string Client_ID = ConfigurationManager.AppSettings["ida:ClientId"];
    

    如果在ida:ClientId之间放置空格,它将不起作用并且将返回null

  2. 确保您的键值名称正确

  3. 您可以尝试使用WebConfigurationManager

答案 8 :(得分:1)

我尝试了所有这些解决方案,但没有一个对我有用。我试图使用“ web.config”文件。一切都正确命名,文件位于正确的位置,但是它拒绝工作。然后,我决定将我的“ web.config”文件重命名为“ app.config”,就像这样,它可以正常工作。

因此,如果“ web.config”文件遇到此问题,请确保将其重命名为“ app.config”。

答案 9 :(得分:0)

当我测试类库(.dll)时,这发生在我身上。他们都在同一个项目中,但该库的App.config具有我需要的设置。我写的测试应用程序需要设置,因为正在运行库。

答案 10 :(得分:0)

我遇到了这个问题,因为我从文件资源管理器中复制了一个项目并重命名了该项目。这复制了Debug文件夹,因为我没有将它设置为“如果更新则复制”。它没有覆盖旧的App.config文件。

只需删除Debug文件夹并重建即可。希望有所帮助。

答案 11 :(得分:0)

仅在从另一个项目中调用它时,我才刚刚发生。 显然,在另一个项目中,该引用尚未定义为“服务引用”,而是被定义为“连接的服务”。我删除了引用,然后再次添加。

答案 12 :(得分:0)

在 Visual Studio 中,右键单击配置文件,选择“属性”,然后将“复制到输出目录”更改为“始终复制”或“如果更新则复制”。

或者,手动将以下部分添加为 .csproj 文件中元素的子元素(此部分用于文件“App.config”的“始终复制”):

  <ItemGroup>
    <None Update="App.config">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
  </ItemGroup>

答案 13 :(得分:-3)

如果那是你的整个配置文件,那么你就错过了<configuration>元素。