Azure部署插槽——交换和保留连接字符串

3
我最近使用"预览交换"功能将Azure的一个暂存应用程序切换为生产应用程序,完成交换后,生产应用程序指向了暂存SQL DB连接字符串。在应用程序设置中,我保存了暂存连接字符串,并将其作为插槽设置在暂存插槽中进行了检查,生产连接字符串也被保存并作为插槽设置在生产插槽中进行了检查。
有没有人遇到过这种情况?我需要各自的连接字符串与各自的插槽相关联,但在我的情况下,即使我认为我已经正确地将它们配置为插槽设置并在两个环境中都进行了检查,交换操作仍会将源字符串传递到目标生产插槽中。

你如何理解它没有被更改?Azure不会覆盖物理文件。因此,如果您检查物理文件,您将看到已发布的文件(第一个文件),但是它仍然会覆盖它。 - Erkan Demirel
我正在通过观察部署后的数据库表来验证这一点。交换之后,我们的生产用户正在向暂存表写入数据。如果我将连接字符串设置为每个插槽都固定,那么这种情况不应该发生——暂存连接字符串应该固定在暂存插槽上,而生产连接字符串应该固定在生产插槽上。 - Ben
1
@Ben你解决了这个问题吗?我遇到了类似的问题,当我将数据库切换到预期的那个后,我的网站就无法工作了。考虑到只是删除插槽/数据库并重新开始,但这不是一个真正好的解决方案。 :( - REMESQ
我想我也会这样做。我现在正在与一个使用Microsoft Azure的人合作,他基本上建议我做同样的事情。看起来我的插槽设置并没有真正起到任何作用,因为当我执行交换时它们根本没有被读取。通过一些远程调试,我确认了这一点,我甚至将插槽中的连接字符串更改为不存在的数据库,但我仍然能够建立连接。此外,在交换后,我可以看到每个插槽中的web.config文件,它们确实将连接字符串颠倒了过来。 - Ben
编辑:我的运行时连接字符串出现了问题。当我部署到一个插槽时,用于连接 SQL 数据库的 DB 连接字符串由于某种原因是在实体框架的 web.config 中生成的,而不是实际的 SQL 连接字符串。由于 EF 字符串中嵌入了 SQL 字符串,它能够使用该字符串进行连接。 - Ben
2个回答

0
在 Azure 门户的 AppSettings 中,单击连接字符串旁边的“Slot Setting”选项: enter image description here

1
我已经完成了,如上所述。连接字符串仍然与其余代码一起被交换。 - Ben
1
我也遇到了同样的问题。所有应用程序设置和连接字符串都是如此。 - Alex Sorokoletov
请确保您在页面顶部点击“保存”按钮,而不仅仅是“确定”。 - Kuzon

0
你是每次需要时都读取连接字符串,还是在应用程序启动期间只读取一次连接字符串并将其保存到内存值中?Startup.cs例程似乎只运行一次,并且在交换后不会重新运行。因此,如果您在暂存槽中的启动期间读取该值,然后切换到生产环境,该值将不会被刷新。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接