ConfigurationManager 在尝试读取 .NET 4.0 中的连接字符串时引发 null 异常

ConfigurationManager throwing null exception when trying to read connection string in .NET 4.0

提问人:K.Z 提问时间:7/23/2022 最后编辑:Daniel A. WhiteK.Z 更新时间:7/25/2022 访问量:613

问:

我正在研究 .NET Framework 4.0 项目和 .我试图使用它读取 connectionString,但收到 null 引用异常。Class LibraryADO.NETApp.configConfigurationManager

Error

enter code here

app.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
  </configSections>
 <connectionStrings>
    <add name ="dbConnection" connectionString="Data Source=xyz;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>

Reading ConnectionString

using System.Configuration;

var x22 = ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString;

enter image description here

C# ado.net net-4.0 system.configuration

评论

1赞 Ralf 7/23/2022
这些设置必须位于宿主可执行文件的 app.config 中,如果它仅在后围程序集的 app.config 中,则无济于事。您可能想看看到达输出文件夹的配置的外观。大概你期望的设置不在那里。
0赞 K.Z 7/23/2022
我有与类库项目分开的winForm应用程序,在类库中,我有app.config,我正在尝试读取连接字符串。我在winForm应用程序中没有app.config,你相信是因为这个吗?
1赞 Ralf 7/24/2022
可执行文件的 app.config 将复制到输出文件夹,并且设置应位于该 app.config 中。但同样,只需查看输出文件夹并查看MyLovelyApplication.exe.config。您可能需要查看文档 learn.microsoft.com/en-us/dotnet/framework/configure-apps/ 中的“库配置”部分...
1赞 7/24/2022
@K.Z:在将来的应用中,请记住这一点。当库实现或应用实现某种配置,并且需要该配置中的那些特定值才能使其工作时,父程序(将其作为依赖项包含的程序)应用程序配置将成为所有配置文件相关依赖项的参考点。
1赞 7/24/2022
但是,dotnet 中存在一种分层结构,它允许你通过将要求放置在链的较高位置或较低位置来“替代”该要求,但这是你需要为实现检查的内容,在这种情况下,很可能需要位于更高的层(如果这是 IIS 托管的应用,则可能是站点级别层)。

答:

1赞 Hadi Mazareei 7/23/2022 #1

在解决方案资源管理器中,在引用节点下,检查是否添加了与所需配置类相关的程序集 System.Configuration,以及是否存在与引用相关的任何错误。

但是,您的代码是正确的,我建议您通过检查该命令的返回值中的 null 情况来尝试避免此错误。也许您的默认路径中不存在配置文件。检查配置文件是否存在,然后尝试读取其数据。

评论

0赞 K.Z 7/23/2022
谢谢@Hadi。我有上传的屏幕截图有问题,对我来说似乎很好。.
0赞 Community 7/25/2022
正如目前所写的那样,你的答案尚不清楚。请编辑以添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以在帮助中心找到有关如何写出好答案的更多信息。
1赞 Ahmed_Amr 7/24/2022 #2

在应用程序配置中

<connectionStrings>
    <add name="[name]" connectionString="[YOUR CONNECTION]" />
</connectionStrings>

调用 connectionString

 ConfigurationManager.ConnectionStrings["name"].ConnectionString

评论

0赞 Community 7/25/2022
您的答案可以通过额外的支持信息得到改进。请编辑以添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到有关如何写出好答案的更多信息。