Azure备份,应用程序设置中的连接字符串是否会导致现有应用程序出现问题?

时间:2018-07-10 17:38:48

标签: azure asp.net-core

我们已将我们的应用程序服务升级到S1,并希望设置自动备份。这是一个带有SQL数据库的.net核心应用程序。对于数据库部分,我得到以下信息:

  

在应用中未找到支持的SQL数据库或MySQL类型的连接字符串。

我已经采用了由以前的开发人员构建的这个项目,而现在才开始湿透。我了解可以在应用程序设置中添加连接字符串,但我担心它会破坏应用程序。

例如,现在在代码本身中的appsettings.json

中设置了连接字符串。
{
"Data": {
        "ConnectionStrings": {
            "ConnectionString":"Server=****;Initial Catalog=*****;Persist Security Info=False;User ID=*****;Password=*****;MultipleActiveResultSets=True;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
            //"ConnectionString":"Server=****;Initial Catalog=*****;Persist Security Info=False;User ID=*****;Password=*****;MultipleActiveResultSets=True;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"

        }
},
"Logging": {
    "IncludeScopes": false,
    "LogLevel": {
        "Default": "Debug",
        "System": "Information",
        "Microsoft": "Information"
    }
}

其他开发人员设置的方式是登台连接字符串,发布到生产时会被注释掉,发布到登台时会被替换为appsettings.json。在上面的示例中,还有另外一个仅用于localhost开发。

此连接字符串在Startup.cs

中使用
public void ConfigureServices(IServiceCollection services)
    {
        ...

        services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(Configuration["Data:ConnectionStrings:ConnectionString"]));


    }

现在这可能是一个愚蠢的问题,但是如果在Azure设置中的应用程序中,如果我在其中添加连接字符串以利用自动备份,我是否会破坏任何内容?我指的是选择应用程序,单击“配置应用程序设置”,然后添加连接字符串。

我现在也不使用插槽。因此,我的目标是现在(随着我对我尚未开发的应用程序的更多了解并学习如何使用Azure),我们将:

  1. 设置应用程序和SQL数据库的自动备份
  2. 在运行时不影响应用本身。

看起来很傻,我对这种环境是陌生的,只是有点偏执。我的直觉告诉我,代码将执行并保持不变,但是在部署时,我不确定Azure是否在幕后进行了某些操作,从而导致这些操作在我的脑海中浮现。

2 个答案:

答案 0 :(得分:1)

  

在应用中未找到支持的SQL数据库或MySQL类型的连接字符串。

要连接到数据库,其连接字符串必须存在于Azure门户上Connection strings页的Application Settings页的reset部分中。 enter image description here 因此,我建议您可以转到门户网站检查配置,以确保连接字符串值正确或可用。正确的连接字符串格式列表位于以下site

有关更多详细信息,请参阅how application settings and connections work

要记住的最后也是最重要的一点是 Azure Backup功能缓存连接字符串。设置备份后,对连接所做的任何更改都不会反映出来。

如果更改,则必须点击备份刀片中的public override void OnActionExecuting(HttpActionContext actionContext) { if (!actionContext.ModelState.IsValid) { actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.BadRequest, GetModelStateErrorMessages(actionContext)); } } 按钮,然后再次设置备份。这样可以确保引入新的连接字符串。

答案 1 :(得分:0)

我遇到了同样的问题,幸运的是,我有一个可以在另一个Web应用程序上工作的软件, tcp: 1433 对我来说是固定的,它开始出现:

"name": "NameHere",
"value": "Data Source=tcp:sqlservername.database.windows.net,1433;Initial Catalog=DatabaseName;User ID=sa;Password=password",
"type": "SQLAzure",
"slotSetting": true