entity-framework - Azure 函数和 PowerShell:无法使用 Set-AzWebApp 设置连接字符串
问题描述
出于部署目的,我创建了一个 PowerShell 脚本来设置应用程序设置。这可以通过
$currentAppSettings = $app.SiteConfig.AppSettings
$appSettings = @{}
# Add existing App Settings
ForEach ($currentAppSetting in $currentAppSettings) {
$appSettings[$currentAppSetting.Name] = $currentAppSetting.Value
}
# Add new App Settings
$appSettings["someKey"] = "someValue"
# Update App Settings
Set-AzWebApp -ResourceGroupName $resourceGroupName -Name $appName -AppSettings $appSettings
当我现在使用实体框架时,我还需要设置连接字符串。首先,我认为这应该像应用程序设置一样工作,只需添加 ConnectionStrings 参数:
$currentConnectionStrings = $app.SiteConfig.ConnectionStrings
$connectionStrings = @{}
ForEach ($currentConnectionString in $currentConnectionStrings) {
$connectionStrings[$currentConnectionString.Name] = $currentConnectionString.ConnectionString
}
$connectionStrings["someKey"] = "someValue"
Set-AzWebApp -ResourceGroupName $resourceGroupName -Name $appName -ConnectionStrings $connectionStrings
但这失败并出现错误
Set-AzWebApp:无法验证参数“ConnectionStrings”上的参数。连接字符串类型值对必须是“System.Collections.Hashtable”类型
尽管这$connectionStrings
是类型System.Collections.Hashtable
还尝试使用自定义对象、数组等失败。
如何正确传递连接字符串? 以及如何指定类型(例如 SQLAZURE)?
谢谢
解决方案
根据 Set-AzwebApp 的文档ConnectionStrings
应该是Hastable
.
Set-AzWebApp
[[-AppServicePlan] <String>]
[[-DefaultDocuments] <String[]>]
[[-NetFrameworkVersion] <String>]
[[-PhpVersion] <String>]
[[-RequestTracingEnabled] <Boolean>]
[[-HttpLoggingEnabled] <Boolean>]
[[-DetailedErrorLoggingEnabled] <Boolean>]
[[-AppSettings] <Hashtable>]
[[-ConnectionStrings] <Hashtable>]
[[-HandlerMappings] <System.Collections.Generic.IList`1[Microsoft.Azure.Management.WebSites.Models.HandlerMapping]>]
[[-ManagedPipelineMode] <String>]
[[-WebSocketsEnabled] <Boolean>]
[[-Use32BitWorkerProcess] <Boolean>]
[[-AutoSwapSlotName] <String>]
[-ContainerImageName <String>]
[-ContainerRegistryUrl <String>]
[-ContainerRegistryUser <String>]
[-ContainerRegistryPassword <SecureString>]
[-EnableContainerContinuousDeployment <Boolean>]
[-HostNames <String[]>]
[-NumberOfWorkers <Int32>]
[-AsJob]
[-AssignIdentity <Boolean>]
[-HttpsOnly <Boolean>]
[-AzureStoragePath <WebAppAzureStoragePath[]>]
[-ResourceGroupName] <String>
[-Name] <String>
[-DefaultProfile <IAzureContextContainer>]
[<CommonParameters>]
您应该connectionstring
使用 a 进行设置Hashtable
,如下所示:
$connectionStrings = @{connectionStrings = @{Name="<ConnectionStringName>";Value="<ConnectionSyring>";type="<SQLAzure/SQLServer/Custom/MySql>"}}
Set-AzWebApp -ResourceGroupName $resourceGroupName -Name $appName -ConnectionStrings $connectionStrings
推荐阅读
- command - 如何在 U-Boot CLI 中测试命令的返回
- python - 为什么 dataframe.show() 在 PyCharm 中使我的程序崩溃,但在终端中却没有
- angular - 如何在 Angular 7 中有一个不会冒泡提交事件的按钮?
- reactjs - 错误地列出更新
- python - 如何将“getctime()”和“getmtime()”的输出转换为 HTML 的“published_time”和“modified_time”META 标签所需的时间格式?
- r - 如何理解 randomForest R 包中“数据”和“子集”的参数?
- react-native - 胜利图 - x 轴标签缩短、自定义范围并防止重叠
- ios - 由于 swift 版本 3,ionic 4 ios 无法构建
- sql - 是否可以使用来自多个表的数据执行 INSERT INTO SELECT 语句?
- python - 线程在 python 3.7 32 位中“消失”,但不是 64 位,除非我收集作业并等待它们