我有时会这样:
在Azure门户中,我转到“App Services”,然后点击我的网络应用程序,然后转到“应用程序设置”。
这里我从“应用程序设置”列表中更改了一个值:
EG。我将“128”更改为“129”
最后,我点击“保存”。
这会导致我的网络应用重启。我不希望这样。
问题:有没有办法在不重启的情况下手动更改此值?如果没有,我应该以另一种方式存储这个值吗?也许在web.config中使用一个我可以每次上传的新部分?
如果我使用新的部分,例如:
<moreAppSettings configSource="moreSettings.config">
</moreAppSettings>
这个moreSettings.config是这样的:
<?xml version="1.0" encoding="utf-8"?>
<moreSettings>
<add key="ClientAppBuild" value="129" />
</moreSettings>
我可以在不重启的情况下上传和覆盖单个.config文件吗?
答案 0 :(得分:3)
通过Azure门户编辑应用程序设置与编辑web.config文件的方式相同。因此,这将导致重新启动托管Web应用程序的IIS应用程序池。这在Azure App Service中的工作方式与在任何Windows Server上使用IIS的方式完全相同。
如果您在更新特定设置时不想重新启动应用程序池,那么您需要将它们存储在其他位置。如果要存储简单的键/值对,则可以将其存储在使用应用程序部署的JSON或XML文件中,或者可以使用Azure存储表或Redis缓存等键/值存储服务。您也可以将Key / Value对存储在应用程序数据库中。无论您将它存储在何处,您都可能希望实现某种缓存,这样您就不必在每次访问时都从存储中读取值。
答案 1 :(得分:2)
如果你所追求的只是一个你可以在运行时修改的键值存储,为什么不使用专门为此设计的东西,比如Table Storage或Redis Cache?
如果您只是尝试存储您的构建号,只需在项目中部署一个静态VERSION
文件(由源代码控制未跟踪),并在构建时增加内部版本号。您需要将此文件保留在wwwroot
之外(并在d:\home\site\somethingElse
下),以便下一次部署不会清除它。
如果您将源代码控制连接到Kudu以进行持续集成,则可以获取当前/活动提交ID (如果您不回滚,它也代表您最新构建的提交)和一些通过调用Kudu的/api/deployments
:
http is like curl but different
$ http https://SiteUsername:SitePassword@sitename.scm.azurewebsites.net/api/deployments
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
...
{
"active": true,
"author": "snobu",
"deployer": "GitHub",
"end_time": "2017-03-29T08:47:08.954981Z",
"id": "5ada48724129c78b8a993b4a25f2144aec03cbd2",
"message": "Changed bootstrap theme to Flatly",
...
有关该API的更多信息,请访问https://github.com/projectkudu/kudu/wiki/REST-API#deployment
这比人工构建号更有意义。您可以安全地将site-level credentials存储为应用程序设置,并构建/api/deployments
URL,而无需编写密码。
答案 2 :(得分:0)
我可以想到的另一个解决方案是有2个部署插槽,
预生产是与生产具有类似配置的插槽,以实现零停机时间。
所以逐步是:
重复第1步和第2步进行生产,然后将流量返回生产。