ConfigurationManager.AppSettings变为null?

Nic*_*ahn 32 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"];
    }
}
Run Code Online (Sandbox Code Playgroud)

web.config中:

<appSettings>
    <add key="StoreId" value="123" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)

Ben*_*Ben 37

如果你是单位测试你需要的副本中的app.config中的内部单元测试项目

  • 至少为App.Config**创建一个**快捷方式文件 - 一般情况下*除非通过版本控制系统,否则不应重复代码文件*.如果您可以尝试使用DI并在单元测试中模拟App.Config. (3认同)
  • 这是我的问题的解决方案。我必须从我的web.config中提取标签,并将其放在&lt;configuration&gt;分支之间的app.config中。一旦我做完,我的单元测试就可以开始漂亮地工作了。 (2认同)
  • 我想我必须训练自己忽略任何带有大写锁定的帖子,因为我一开始直接滚动过去......然后向上滚动并意识到这是问题的“精确”解决方案...... (2认同)

MrE*_*yes 30

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

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

  • 好的,什么是解决方案? (35认同)

Jer*_*son 15

我知道这是旧的,但我一直回到这里:(

通常的原因是由于背景.

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

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

一个漂亮的解决方案是在其他项目中添加配置文件快捷方式,因此您只需更新一个文件: 在此输入图像描述

它类似于按照答案#2共享程序集文件:https://stackoverflow.com/a/15319582/495455

  • 控制台应用程序引用和调用类库也是如此.设置进入控制台的app.config,可以从类库调用,如`ConfigurationManager.AppSettings ["myKey"]` (3认同)
  • *接受的答案很好* - 不,它甚至不是一个解决方案。您可以在解决方案资源管理器中看到该文件是一个快捷方式,抱歉,我不适合那些想要维护基本相同文件副本的人!新秀们。 (2认同)

Dar*_*rov 6

和:

<appSettings>
    <add key="StoreId" value="123" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)

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

  • 值得注意的是,如果您有运行代码的测试工具,那么*它的*app.config需要具有您正在寻找的设置. (7认同)

eRa*_*ToX 5

免责声明 ;) 这篇文章不是为了回答OP,因为为时已晚,但绝对会帮助那些结束本页面的读者.

问题我面临着:ConfigurationManager.AppSettings["uName"]回来null在我的C#的Web API项目.

我检查的基本事项:

1)在代码中ConfigurationManager.AppSettings["uName"],我正在使用uName我在web.config文件中的精确密钥' '

<appSettings>
      <add key="uName" value="myValue" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)

经过我还没有输入错误userName,而不是uName

2)因为它是一个Web API项目,所以它将有一个文件web.config代替app.config,而且在项目的根文件夹中也是如此.[参考图片].

在此输入图像描述

方案:

对我有用的解决方案,

改变 ConfigurationManager.AppSettings["uName"]WebConfigurationManager.AppSettings["uName"]

确保我有

<appSettings>
          <add key="uName" value="myValue" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)

正确的 文件即.

右侧文件不是 View文件夹中的web.config

无论是调试还是发布web.config

在此输入图像描述