IT

Azure에서 ASP.NET Core 웹 앱에 대한 SQL 연결 문자열 설정

itgroup 2023. 5. 18. 20:58
반응형

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:기본 연결:연결 문자열"을 키로 지정합니다.

거의 다 됐어요.

  1. Azure 웹 앱 > configure > connection strings로 이동합니다.
  2. 이름으로 연결 문자열 추가DefaultConnection.
  3. 사용하다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

반응형