C#读取Azure连接字符串遇ConfigurationErrorsException错误求助
问题描述
我正在通过C#学习云计算,目前尝试从XML配置文件中读取Azure云的连接字符串并在控制台输出,以确保连接云服务前代码能正常运行。但运行时出现错误:System.Configuration.ConfigurationErrorsException: 'Configuration system failed to initialize'。我猜测是XML配置文件存在问题,但不确定具体原因,想请教哪里出错了?
相关代码
program.cs
using My_Program.DataAccess; using System; namespace My_Program { class Program { static void Main(string[] args) { var readConfig = new ReadConfigration(); var connString = readConfig.RadConfig(); Console.WriteLine(connString); } } }
DataAccesss/ReadConfiguration.cs
using System; using System.Configuration; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace My_Program.DataAccess { public class ReadConfigration { public string RadConfig() { string connectionString = ""; foreach(ConnectionStringSettings settings in ConfigurationManager.ConnectionStrings) { connectionString = settings.ConnectionString; } return connectionString; } } }
DataAccesss/App.config
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <appSettings> <add name="employeeAzurePreviewDatabase" providedName ="System.Data.SqlClient" connectionString="Server=tcp:myserver-demo1.database.windows.net,1433;Initial Catalog=day-1;Persist Security Info=False;User ID=CloudSAd742343E3;Password={your_password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" /> </appSettings> </configSections> </configuration>
错误信息

An unhandled exception of type 'System.Configuration.ConfigurationErrorsException' occurred in System.Configuration.ConfigurationManager.dll Configuration system failed to initialize
解决方案
你的问题主要出在配置文件结构错误,还有几处细节问题,具体修正如下:
1. 修复配置文件结构
<configSections>节点是用来定义自定义配置节的,不能直接嵌套<appSettings>或连接字符串,这是导致配置初始化失败的核心原因。- 连接字符串必须放在专门的
<connectionStrings>节点下,而非<appSettings>。 - 你还把
providerName拼写成了providedName,这也是无效配置的原因之一。
修正后的App.config(注意:配置文件要放在主控制台项目My_Program中,类库项目的App.config不会被控制台程序加载):
<?xml version="1.0" encoding="utf-8"?> <configuration> <connectionStrings> <add name="employeeAzurePreviewDatabase" providerName="System.Data.SqlClient" connectionString="Server=tcp:myserver-demo1.database.windows.net,1433;Initial Catalog=day-1;Persist Security Info=False;User ID=CloudSAd742343E3;Password={your_password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" /> </connectionStrings> </configuration>
2. 优化读取逻辑
当前遍历所有连接字符串的写法会覆盖掉前面的结果,直接通过配置项名称获取更准确,同时修正拼写错误:
public string ReadConfig() // 修正方法名:RadConfig → ReadConfig { var connSettings = ConfigurationManager.ConnectionStrings["employeeAzurePreviewDatabase"]; return connSettings?.ConnectionString ?? string.Empty; }
3. 其他细节修正
- 类名
ReadConfigration拼写错误,应改为ReadConfiguration(少了字母u)。 - 确保主项目已安装
System.Configuration.ConfigurationManagerNuGet包,否则会找不到ConfigurationManager类。
内容的提问来源于stack exchange,提问作者kawa
相关产品推荐
相关产品推荐

