c# - ConfigurationManager ConnectionString 抛出错误并返回 null

标签 c#

我对为什么我的一个单元测试失败感到非常震惊。这是一个简单的测试,用于查看是否返回了正确的连接字符串。我的 App.config 看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
   <system.web>
      <compilation defaultLanguage="c#" debug="true" />
   </system.web>
   <connectionStrings>
      <add name="DbConnectionString" connectionString="Test_HighOnCoding_Db" />
   </connectionStrings>
</configuration>

这是我的简单单元测试,它总是抛出 null 异常:

[TestFixture]
public class when_retrieving_database_name_from_config
{
    [Test]
    public void should_get_the_correct_database_name()
    {
       var dbName = ConfigurationManager.ConnectionStrings["DbConnectionString"].ConnectionString;

       // dbName is always null 

       Assert.AreEqual("Test_HighOnCoding_Db",dbName); 
    }
 }

最佳答案

根据您在下方的评论,我的原始答案不适用。

然后我建议检查一件事;您的 app.config 文件是否与您的程序一起移动到目录中,并重命名为与程序相同的名称,并添加了 .config?

所以,program.exeprogram.exe.config 作为配置文件?`

看起来您这里有一个 Web 应用程序;如果是这样,您的配置文件应该是 web.config 而不是 app.config。然后,您应该使用 System.Web.Configuration 命名空间中的 WebConfigurationManager

关于c# - ConfigurationManager ConnectionString 抛出错误并返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4306050/

相关文章:

c# - 想要使用 C# (FtpWebResponse) 从 FTP 读取文件列表,但它返回 HTML

c# - 启用 scrollviewer 滚动每个项目而不是默认行为

c# - 链接按钮打开一个模态弹出窗口,但弹出窗口立即关闭

c# - Umbraco: CS0234 类型或命名空间名称 'TextPage' 不存在

c# - 如何在C#中的一个循环中运行两个foreach循环

C# - 在不知道它会是什么的情况下初始化一个变量

c# - 使用 xaml 自定义 View 中的嵌套元素

c# - MVC ViewModel,使用具有某些标记为必需的属性的 VM,具体取决于它是 GET 还是 POST

c# - 获取磁盘上文件的大小

c# - 防止 Json.NET 将字符串数组反序列化为键值对数组