Azure에서 ASP.NET Core 웹 앱에 대한 SQL 연결 문자열 설정
Visual Studio 2015에서 새 ASP.NET Core 웹 응용 프로그램을 만들었습니다.저는 또한 깃허브에서 앱을 가져와서 실행할 수 있도록 Azure 웹 앱을 설정했습니다.이것은 잘 작동하지만, 저는 애저의 데이터베이스에 연결하는 데 어려움을 겪고 있습니다.
지역적으로, 이것은 작동하고, 그것은 사용합니다.config.json
암호로Data:DefaultConnection:ConnectionString
연결 문자열입니다.
코드를 그대로 두고 Azure에서도 작동시키려면 어떻게 해야 합니까?포털에서 응용 프로그램 설정, 연결 문자열 및 응용 프로그램 설정을 모두 설정해 보았습니다."SQLCONNSTR_DefaultConnection"과 "Data:기본 연결:연결 문자열"을 키로 지정합니다.
(어쨌든 앱 설정은 작동하지 않는 것 같습니다.제가 제공하는 가치가 너무 긴 것 같습니다).
그렇다면 소스 제어에서 체크인하지 않고 어떻게 Azure 데이터베이스에 대한 연결 문자열을 Azure 웹 앱(ASP.NET 5)에 제공할 수 있습니까?
업데이트 My Startup.cs 은 다음과 같습니다(GitHub의 전체 파일 참조).
public Startup(IHostingEnvironment env)
{
var configuration = new Configuration()
.AddJsonFile("config.json")
.AddJsonFile($"config.{env.EnvironmentName}.json", optional: true);
if (env.IsEnvironment("Development"))
{
configuration.AddUserSecrets();
}
configuration.AddEnvironmentVariables();
Configuration = configuration;
}
에서ConfigureServices
방법에는 다음과 같은 것도 있습니다.
services.Configure<AppSettings>(Configuration.GetSubKey("AppSettings"));
그리고, 또한.ConfigureServices
방법:
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]))
.AddDbContext<InvoicesDbContext>(options =>
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));
// So this is where I want my app in Azure to use the connection string I
// provide in the portal
단답형
포털에서 응용 프로그램 설정, 연결 문자열 및 응용 프로그램 설정을 모두 설정해 보았습니다."SQLCONNSTR_DefaultConnection"과 "Data:기본 연결:연결 문자열"을 키로 지정합니다.
거의 다 됐어요.
- Azure 웹 앱 > configure > connection strings로 이동합니다.
- 이름으로 연결 문자열 추가
DefaultConnection
. - 사용하다
Configuration.Get("Data:DefaultConnection:ConnectionString")
액세스할 수 있습니다.
사용 예제timesheet_db
대신에DefaultConnection
이것은 저만의 타임시트 애플리케이션의 예입니다.연결 문자열의 이름이 지정되었습니다.timesheet_db
해당 문자열의 모든 인스턴스를 다음으로 바꾸기DefaultConnection
사용 사례에 맞게 예제를 조정합니다.
Azure 웹 앱 구성
Azure 웹 앱 서비스 제어 관리자
https://myWebAppName.scm.azurewebsites.net/Env 의 온라인 서비스 제어 관리자가 연결 문자열을 표시합니다.
Startup.cs
구성 설정Startup
환경 변수가 config.json을 덮어쓰도록 합니다.
public IConfiguration Configuration { get; set; }
public Startup()
{
Configuration = new Configuration()
.AddJsonFile("config.json")
.AddEnvironmentVariables(); <----- will cascade over config.json
}
다음에서 데이터베이스 구성Startup
.
public void ConfigureServices(IServiceCollection services)
{
services
.AddEntityFramework()
.AddSqlServer()
.AddDbContext<ProjectContext>(options =>
{
var connString =
Configuration.Get("Data:timesheet_db:ConnectionString");
options.UseSqlServer(connString);
});
}
물론, 이 예에서는 다음과 같은 이름의 연결 문자열을 사용합니다.timesheet_db
모든 인스턴스를 이름이 지정된 연결 문자열로 바꿉니다.DefaultConnection
모든 게 잘 될 겁니다
RC2에서는 연결 문자열이 Azure에서 작동하도록 읽기 방법을 변경해야 했습니다.저의 경우, Azure 연결 문자열의 이름이 "DefaultConnection"이고 다음 사용자가 액세스할 수 있는지 확인해야 했습니다.
RC1:
{
"Data": {
"DefaultConnection": {
"ConnectionString": "Server=(localdb)\\MSSQLLocalDB;Database=db;Trusted_Connection=True;"
}
}
}
액세스 사용자:
var conn = Configuration["Data:DefaultConnection:ConnectionString"];
RC2:
{
"Data": {
},
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=db;Trusted_Connection=True;"
}
}
액세스 사용자:
var conn = Configuration.GetConnectionString("DefaultConnection");
연결 문자열을 설정할 수 있는 여러 가지 옵션이 있습니다.기본 설정 클래스는 다른 소스에서 환경 설정을 가져옵니다.config.production.json. 또는 config.staging.json에서 연결 문자열을 설정할 수 있습니다.시작 클래스 참조
public Startup(IHostingEnvironment env)
{
// Setup configuration sources.
var configuration = new Configuration()
.AddJsonFile("config.json")
.AddJsonFile($"config.{env.EnvironmentName}.json", optional: true);
if (env.IsEnvironment("Development"))
{
// This reads the configuration keys from the secret store.
// For more details on using the user secret store see http://go.microsoft.com/fwlink/?LinkID=532709
configuration.AddUserSecrets();
}
configuration.AddEnvironmentVariables();
Configuration = configuration;
}
Azure PowerShell에서 이 명령을 사용하여 2개의 앱 설정을 슬롯에 고정되도록 설정합니다.
Set-AzureWebsite -Name mysite -SlotStickyAppSettingNames @("myslot", "myslot2")
그리고 이 명령은 2개의 연결 문자열을 슬롯에 고정하도록 설정합니다.
Set-AzureWebsite -Name mysite -SlotStickyConnectionStringNames @("myconn", "myconn2")
언급URL : https://stackoverflow.com/questions/31097933/setting-the-sql-connection-string-for-asp-net-core-web-app-in-azure
'IT' 카테고리의 다른 글
VB.NET '위드' 선언문 - 포용할 것인가, 피할 것인가? (0) | 2023.05.18 |
---|---|
사전을 값별로 정렬하려면 어떻게 해야 합니까? (0) | 2023.05.18 |
Django-DB-Migrations: 보류 중인 트리거 이벤트가 있기 때문에 TABLE을 변경할 수 없습니다. (0) | 2023.05.18 |
mongo 콘솔에서 날짜 필드를 업데이트하는 방법은 무엇입니까? (0) | 2023.05.18 |
SQL에서 HAVING과 WHERE의 차이점은 무엇입니까? (0) | 2023.05.18 |