gpt4 book ai didi

c# - configuration.GetConnectionString ("MyConn") 得到空值?

转载 作者:太空狗 更新时间:2023-10-29 23:05:16 24 4
gpt4 key购买 nike

在以下控制台应用程序 (.Net core 2.0) 中,conn得到一个空值。

var services = new ServiceCollection();

IConfigurationRoot configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddXmlFile("App.config", optional: false).Build();

services.AddSingleton(configuration);

var conn = configuration.GetConnectionString("MyConn"); // conn is null

下面是App.config。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="MyConn" connectionString="....." />
</connectionStrings>
<Settings>
<Name>Test</Name>
</Settings>
</configuration>

有一些代码可以获得Name 的值(“测试”)的 Settings成功。

更新:

在分配 conn 之后, 我有以下代码来获取 <Settings> XML 部分的部分,它可以获得值“Test”。

var myOptions = new MyOptions();
configuration.GetSection("Settings").Bind(myOptions);

最佳答案

看,GetConnectionString 只是一个 extension method只需执行以下操作:

public static string GetConnectionString(this IConfiguration configuration, string name)
{
return configuration?.GetSection("ConnectionStrings")?[name];
}

如果在调试过程中您检查 configuration.Providers 中的 Data您会发现以下键/值:

key: "connectionStrings:add:MyConn:name" | value: "MyConn"
key: "connectionStrings:add:MyConn:connectionString" | value: "....."

这就是为什么您得到一个 null 值的原因。


因此,使用当前的 XML 结构,您可以简单地执行以下操作:

var connString = configuration.GetValue<string>("connectionStrings:add:MyConn:connectionString", string.Empty);

或者将您的 XML 修改为

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<MyConn>conn_string_here</MyConn>
</connectionStrings>
</configuration>

并使用

var conn = configuration.GetConnectionString("MyConn");
// conn value will be "conn_string_here"

关于c# - configuration.GetConnectionString ("MyConn") 得到空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45948141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com