首页 > 解决方案 > 将 ASP.NET Core MVC 部署到 Azure 应用服务 (Linux) 时出现 SQL 连接字符串问题

问题描述

我使用 EF Core 和 SQL Server 创建了一个简单的 ASP.NET Core MVC 应用程序。在 Windows 开发机器上,它使用 localdb。我正在尝试部署到 Azure App Service (Linux)。我创建了一个 Azure SQL 数据库。从 Visual Studio 2019 部署,我已将数据库设置为依赖项。在发布配置文件设置中,我为正在使用的数据库上下文选择了 Azure SQL 连接字符串。我还检查了 EF 迁移并在部署时脚本成功地为应用程序创建了表。我可以连接到 Azure SQL 并查看表。但是,当我运行已部署的应用程序并尝试数据库操作时,我得到: PlatformNotSupportedException: LocalDB is not supported on this platform

我可以从文档中看到设置连接字符串的各种方法,但我想知道 Visual Studio 2019 中的发布向导正在尝试做什么以及为什么它不起作用?我也不清楚密码存储在哪里。在发布配置文件中,密码似乎在连接字符串中作为纯文本,不好。我想知道如何将其用于生产。

更新我已经按照 Linux 教程中的步骤,使用 Azure CLI 并运行以下命令修复了这个问题:

az webapp config connection-string set --resource-group [myResourceGroup] --name [app name] --settings MyDbConnection='[connection-string]' --connection-string-type SQLServer

我不确定这种方法的安全性,并计划进一步调查。

标签: asp.net-mvcasp.net-coreentity-framework-coreazure-sql-database

解决方案


发布向导只是为您处理数据库创建/迁移,它不会修改您的项目,因为那是 1)不是它的目的和 2)它不能为您做出配置决定(即使用 appsettings、环境变量等.)

您需要通过配置在生产中提供连接字符串,就像在开发中一样。由于您要部署到 Azure 应用服务,因此最合乎逻辑的位置是 Azure 中的应用设置。这些将通过环境变量加载。只需指定您在开发中使用的相同密钥并在那里指定生产数据库目标。


推荐阅读