.NET Core에서 연결 문자열을 읽는 방법?
구성 파일에서 연결 문자열 만 읽고이를 위해 "appsettings.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 Core의 문자열 변수에 저장하려면 어떻게해야합니까?
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"
}
게시 된 답변은 괜찮지 만 연결 문자열에서 읽는 것과 동일한 질문에 직접 답변하지 않았습니다. 많은 검색을 통해 약간 더 간단한 방법을 찾았습니다.
Startup.cs에서
public void ConfigureServices(IServiceCollection services)
{
...
// Add the whole configuration object here.
services.AddSingleton<IConfiguration>(Configuration);
}
컨트롤러에서 구성에 대한 필드와 생성자에 대한 매개 변수를 추가하십시오.
private readonly IConfiguration configuration;
public HomeController(IConfiguration config)
{
configuration = config;
}
이제 나중에보기 코드에서 다음과 같이 액세스 할 수 있습니다.
connectionString = configuration.GetConnectionString("DefaultConnection");
See link for more info: https://docs.microsoft.com/en-us/ef/core/miscellaneous/connection-strings
JSON
{
"ConnectionStrings": {
"BloggingDatabase": "Server=(localdb)\\mssqllocaldb;Database=EFGetStarted.ConsoleApp.NewDb;Trusted_Connection=True;"
},
}
C# Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<BloggingContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("BloggingDatabase")));
}
The way that I found to resolve this was to use AddJsonFile in a builder at Startup (which allows it to find the configuration stored in the appsettings.json file) and then use that to set a private _config variable
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
_config = builder.Build();
}
And then I could set the configuration string as follows:
var connectionString = _config.GetConnectionString("DbContextSettings:ConnectionString");
This is on dotnet core 1.1
You can use configuration extension method : getConnectionString ("DefaultConnection")
i have a data access library which works with both .net core and .net framework.
the trick was in .net core projects to keep the connection strings in a xml file named "app.config" (also for web projects), and mark it as 'copy to output directory',
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="conn1" connectionString="...." providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
ConfigurationManager.ConnectionStrings - will read the connection string.
var conn1 = ConfigurationManager.ConnectionStrings["conn1"].ConnectionString;
참고URL : https://stackoverflow.com/questions/39083372/how-to-read-connection-string-in-net-core
'developer tip' 카테고리의 다른 글
numpy의 배열에 단일 요소 추가 (0) | 2020.09.16 |
---|---|
HTML 소스에 액세스하는 Python Selenium (0) | 2020.09.16 |
인증 : JWT 사용 vs 세션 (0) | 2020.09.16 |
Kotlin 배열을 Java varargs로 변환 (0) | 2020.09.16 |
bootRun에서 JVM 옵션을 전달하는 방법 (0) | 2020.09.16 |