我有一个azure云服务项目,它由一个工人角色和一个网络角色组成。我需要临时部署和实时部署,但我需要它们具有不同的连接字符串,因为worker角色生成大量数据,这些数据是由web应用程序报告的,而我不希望在生产中有测试数据。
配置它的最好方法是什么,这样我就可以快速地从暂存状态交换或升级到实时状态,并且连接字符串只需要更新,而不必使用不同的配置从visual studio重新发布。
发布于 2015-01-08 02:07:20
您可以编写一个PowerShell脚本来调用Azure Management REST API并更改连接字符串。
$restEndpoint = "https://management.core.windows.net/$subscriptionId/services/webspaces/$webspace/sites/$website/slotConfigNames"
$appSettings = $appSettingNames -replace ",", "','"
$connectionStrings = $connectionStringNames -replace ",", ""","""
$payload = "{""AppSettingNames"": [""$appSettingNames""], ""ConnectionStringNames"": [""$connectionStrings""]}"
Invoke-WebRequest -Uri $restEndpoint -Body $payload -CertificateThumbprint $certThumbprint -ContentType "application/json" -Headers @{ "x-ms-version" = "2014-04-01" } -Method POST发布于 2015-01-08 01:56:32
据我所知,目前还没有针对这一点的自动化工具。当您交换时,您的配置也会交换。据我所知,您不想交换配置,而只想交换应用程序。
您可能需要构建自己的交换工具,该工具将以您想要的方式连接到管理API和交换。
发布于 2015-01-08 06:03:00
正如其他人所指出的,这是当前一代Azure云服务(Web角色/工作者角色)中存在的VIP交换/插槽交换概念的一个已知限制。
另一种解决方法是使用OnRoleStart事件处理程序,编写一些正在使用的custom code to inspect slot并更新运行配置。
我所看到的解决这类问题的方法也是将尽可能多的配置从本地配置移到远程数据库中,然后将其用作配置源。考虑到web.config配置节在某些情况下的工作方式,这并不总是可行的。
https://stackoverflow.com/questions/27818146
复制相似问题