Azure Web App 在 Kudu Env 中未显示连接字符串

Posted

技术标签:

【中文标题】Azure Web App 在 Kudu Env 中未显示连接字符串【英文标题】:Azure Web App Not Showing Connectionstring in Kudu Env 【发布时间】:2020-05-10 03:44:44 【问题描述】:

我们正在尝试从 Azure Web App 获取连接字符串以与我们的 ASP.net 网站一起使用。

我们已经在 Azure Web App 中正确配置了连接字符串:

但是,当我们访问我们的 Kudu 环境页面时,它显示的连接字符串完全不正确,无法弄清楚为什么它没有显示我们的自定义连接字符串。

另外 - 我们正在使用自定义连接字符串,因为我们有一个特殊的连接器 (Devart mysql),我们需要保持正确的提供程序名称。

当我们尝试加载我们的网站时,我们会收到以下信息:

我想知道 azure web 应用程序是否覆盖了我们的提供程序并将其重置为 Sql Server 提供程序,而不是我们需要使用的 Devart.MySql 提供程序。感谢任何帮助/指导

更新

使用 kudu 检查 web.config 似乎 azure 自动将提供程序名称更改为 System.Data.Entityclient - 我们如何防止这种情况发生?我相信这是问题的根源

另外 - 我们正在使用准系统项目以最低限度对此进行测试,因此我们知道项目中没有其他因素在操纵这些值,可以肯定的是 azure web 应用程序正在做出这种改变,只是没有确定如何解决它

【问题讨论】:

如果您在 app.config 中指定了 Azure 连接字符串,则无需指定。它也以相反的方式工作。您可以同时指定两者,但 azure 设置始终是最重要的。我不确定怎么会出现这种错误,也许你有调试配置有正确的连接字符串,但没有改变你部署到天蓝色时使用的发布配置? 我会假设你有错误的发布配置并且没有为其指定正确的数据库,这就是它在 Kudu 中显示错误值的原因 您也可以使用 Kudu cmd 面板在 wwwroot 文件夹下检查您当前的 web.config 我检查了 kudu web.config - 它会自动更改提供程序名称 - 我已经更新了更多详细信息的问题 - 我们如何防止提供程序名称更改? 您使用什么配置进行部署?你应该在你的 VS web 项目中找到 Web.Release.config 并确保你有正确的连接字符串。 【参考方案1】:

对于 ASP.NET 等 .NET 应用程序,这些连接字符串会在运行时注入到您的 .NET 配置 connectionStrings 设置中,覆盖键等于链接数据库名称的现有条目。

这些设置也将在运行时作为环境变量提供,并以连接类型为前缀。 environment variable 前缀如下:

SQL Server: SQLCONNSTR_
MySQL: MYSQLCONNSTR_
SQL Database: SQLAZURECONNSTR_
Custom: CUSTOMCONNSTR_

您使用ConfigurationManager.ConnectionStrings["keyname"]; 检索应用程序中的设置。

所以在web.config 中将connectionString 设置为空白,会自动使用应用程序设置的connectionString。更多详情可以参考这个tutorial。

【讨论】:

以上是关于Azure Web App 在 Kudu Env 中未显示连接字符串的主要内容,如果未能解决你的问题,请参考以下文章

Azure 应用服务如何从App Service for Linux 的环境中下载Container中非Home目录下的文件呢?

Azure 网站上的 Kudu 部署非常慢

如何让 Azure OIDC 尊重我的重定向 URI?

Azure 函数。为什么我在Kudu中看到两个w3wp进程?

msbuild、dotnet sdks、azure、kudu等使用的环境变量列表

如何使用 Kudu 控制台删除 Azure 应用服务中文件夹中的所有文件