C# · 12月 30, 2021

c# – 如何读取.net内核中的连接字符串?

我想从配置文件只读一个连接字符串,因此
将一个名称为“AppAettings.json”的文件添加到我的项目中,并在其上添加此内容: {“ConnectionStrings”: { “DefaultConnection”: “Server=(localdb)\\mssqllocaldb;Database=aspnet- WebApplica71d622;Trusted_Connection=True;MultipleActiveResultSets=true” },”Logging”: { “IncludeScopes”: false,”LogLevel”: { “Default”: “Debug”,”System”: “Information”,”Microsoft”: “Information” } }}

在asp.net我用这个:

var temp=ConfigurationManager.ConnectionStrings[“DefaultConnection”].ConnectionString;

现在我如何读取c#中的“DefaultConnection”,并将其存储在.net核心中的字符串变量中?

解决方法 您可以使用GetConnectionString扩展方法: string conString = Microsoft .Extensions .Configuration .ConfigurationExtensions .GetConnectionString(this.Configuration,”DefaultConnection”);System.Console.WriteLine(conString);

或使用DI的结构化类:

public class SmtpConfig{ public string Server { get; set; } public string User { get; set; } public string Pass { get; set; } public int Port { get; set; }}

启动:

public IConfigurationRoot Configuration { get; }// This method gets called by the runtime. Use this method to add services to the container.public void ConfigureServices(IServiceCollection services){ // http://developer.telerik.com/featured/new-configuration-model-asp-net-core/ // services.Configure<SmtpConfig>(Configuration.GetSection(“Smtp”)); Microsoft.Extensions.DependencyInjection.OptionsConfigurationServiceCollectionExtensions.Configure<SmtpConfig>(services,Configuration.GetSection(“Smtp”));

然后在家庭控制器中:

public class HomeController : Controller{ public SmtpConfig SmtpConfig { get; } public HomeController(Microsoft.Extensions.Options.IOptions<SmtpConfig> smtpConfig) { SmtpConfig = smtpConfig.Value; } //Action Controller public IActionResult Index() { System.Console.WriteLine(SmtpConfig); return View(); }

这在appsettings.json:

“ConnectionStrings”: {“DefaultConnection”: “Server=(localdb)\\mssqllocaldb;Database=aspnet-WebApplica71d622;Trusted_Connection=True;MultipleActiveResultSets=true”},”Smtp”: { “Server”: “0.0.0.1”,”User”: “user@company.com”,”Pass”: “123456789”,”Port”: “25” }