c# - Azure Web 应用程序未在 Kudu 环境中显示连接字符串

标签 c# asp.net entity-framework azure azure-web-app-service

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

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

enter image description here

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

enter image description here

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

enter image description here

当我们尝试加载我们的网站时,我们收到以下信息: enter image description here

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

更新

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

此外 - 我们正在使用准系统项目来以最低限度进行测试,因此我们知道项目中没有其他因素操纵这些值,非常肯定 azure Web 应用程序正在进行此更改,只是没有确定如何修复它

enter image description here

最佳答案

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

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

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

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

因此,在web.config中将connectionString设置为空,并且将自动使用应用程序设置的connectionString。更多详情可以引用这个tutorial .

关于c# - Azure Web 应用程序未在 Kudu 环境中显示连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59885858/

相关文章:

entity-framework - EF 4.0 中的可空 "scalar navigation properties": Mapping a non-nullable column from a separate database table to a nullable scalar entity property?

c# - 内部接口(interface)实现

c# - .NET 安装程序包安装程序

.net - 跨负载平衡服务器 (ASP.Net) 的选择性缓存清除

.net - 此程序集由比当前加载的运行时更新的运行时构建,无法加载

asp.net - 如何摆脱难看的asp:菜单闪烁?

c# - DTO 的组件也是实体还是 DTO?

C# Mongodb。分组后将 Json 投影为强类型

nHibernate 与带有 Oracle 后端的 Entity Framework

asp.net-mvc - 在 EntityFramework 和 Moq 中模拟模型集合