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

Kus*_*kar 32 azure

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

场景就像 - >

  1. Cloud应用程序部署在Azure上,包含3个实例.
  2. web.config appsetting中有一些静态文本,它在主页上显示(例如 - ©2009我的网站.保留所有权利)
  3. 现在我想改变2009年2010年 Web.Config中提到的静态文本.
  4. 现在我想编辑Web.Config而不重新部署我的网站.
  5. 我不希望- >部署我的应用程序脚手架与更新Web.Config中,然后用其交换生产.

是否有任何技巧来更新运行时部署的包中的文件?

Nic*_*ray 20

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

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

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

一句话没有.

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

决定是否在服务配置设置和Web配置设置中放置密钥.

您可以问自己以下问题:

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

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

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

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


maw*_*tex 8

可能的,如果你更改web.config文件中,ASP.NET应用程序将使用新的设置重新启动,就像你所期望的"正常ASP.NET".您只需要确定您正在对web.config进行正确的更新,否则一旦ASP.NET出现web.config错误,您的实例可能无法修复.

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

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

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

检查此信息以获取有关从RoleEntryPoint.OnStart()写入文件和设置文件权限的信息:如何从RoleEntryPoint.OnStart()获取WebRole站点根路径?