是否可以编辑部署在Windows Azure上的云应用程序的web.config而无需重新部署我的应用程序?

时间:2010-03-02 09:50:38

标签: azure

是否可以在不重新部署我的应用程序的情况下编辑 web.config 我在Windows Azure上部署的云应用程序文件?

情景就像 - >

  1. Cloud应用程序部署在Azure上,包含3个实例。
  2. web.config appsetting 中包含一些静态文本,该文本显示在主页上(例如 - ©2009我的网站。保留所有权利
  3. 现在我想将Web.Config中提到的静态文本从 2009 更改为 2010
  4. 现在我想编辑 Web.Config ,而无需重新部署我的网站。
  5. 我不希望 - >使用更新的 Web.Config 停滞不前上部署我的应用,然后将其与生产交换。
  6. 是否有任何技巧可以从运行时部署的软件包中更新文件?

5 个答案:

答案 0 :(得分:20)

根据Maxim在下面的评论中,这个答案现已过时。

您可以使用Microsoft.Web.Administration.ServerManager库以编程方式修改OnStart事件中Web角色的web.config设置。

***留下原来的答案,因为当时是正确的,因为我回答这个问题时没有使用过Azure,而且我不能100%确定有效的答案。

用一句话来说

您必须使用服务配置文件进行此类设置。

决定是否在服务配置设置和网络配置设置中放置密钥。

您可以问自己以下问题:

此设置是否随每次部署而变化?如果是这样,则 web 配置设置是此信息的正确位置。

部署后此设置是否会更改?如果是这样,则服务配置设置是此信息的正确位置。

Web.config文件是部署包的一部分,因此在部署到Azure时是只读的,以便更新重新部署所需的设置。

服务配置文件随部署包上传但未打包,因此您无需重新部署服务即可上传或编辑文件。

答案 1 :(得分:8)

可能如果您对web.config进行了更改,ASP.NET应用程序将使用新设置重新启动,就像您在“普通ASP.NET”上所期望的那样。您只需要确定您正在对web.config进行正确的更新,否则一旦ASP.NET出现web.config错误,您的实例可能无法修复。

如果您将web.config作为部署包的一部分,则需要更改其上的文件权限,您可以从RoleEntryPoint.OnStart()执行此操作。

另一种方法是让您的ASP.NET应用程序通过一些初始Web处理程序编写初始web.config本身。

默认情况下,ASP.NET应用程序不会对部署包中的文件或RoleEntryPoint代码编写的文件具有更新或删除权限,同时它对其自身创建的文件具有完全访问权限。此行为仅在“真实Azure”上体验,而在使用SDK本地运行时则表现不佳。

检查此项以获取有关从RoleEntryPoint.OnStart()编写文件和设置文件权限的信息:How can I get the WebRole site root path from RoleEntryPoint.OnStart()?

答案 2 :(得分:1)

是的,这可以做到。步骤是:

  1. 使用环境变量'RdRoleRoot'查找角色的根目录。
  2. 查找“RoleModel.xml”文件
  3. 加载“RoleModel.xml”文件,在“网站”节点
  4. 下找到您网站的条目
  5. 在此条目中查找“physicalDirectory”属性,该属性是相对路径 包含web.config文件的目录
  6. 将角色根路径与此physicalDirectory路径组合以获取完整路径
  7. 我使用示例代码撰写了一篇博文http://anuchandy.blogspot.com/2014/02/changing-webconfig-file-deployed-on.html

答案 3 :(得分:0)

是的,您可以,您只需要为Azure创建一个RDC并转到E:\ siteroot \ 0,您将看到所有已部署的文件。并且只需编辑 web.config 您喜欢的内容。它适用于生产和暂存,无需重新部署或重新映像或重新启动。

可能很久以前会问这篇帖子线程,但对于像我这样的人来说,这绝对有用: - )

答案 4 :(得分:0)

2018年7月13日

Azure门户在已部署的App Service下具有一个 App Service编辑器(处于预览状态)。选择此项将使类似于Visual Studio Code的编辑器指向已部署的Azure网站,从而使对web.config(或任何其他文件)的编辑变得容易:

Azure App Service Editor screenshot