是否可以在不重新部署我的应用程序的情况下编辑 web.config 我在Windows Azure上部署的云应用程序文件?
情景就像 - >
是否有任何技巧可以从运行时部署的软件包中更新文件?
答案 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)
是的,这可以做到。步骤是:
我使用示例代码撰写了一篇博文http://anuchandy.blogspot.com/2014/02/changing-webconfig-file-deployed-on.html。
答案 3 :(得分:0)
是的,您可以,您只需要为Azure创建一个RDC并转到E:\ siteroot \ 0,您将看到所有已部署的文件。并且只需编辑 web.config 您喜欢的内容。它适用于生产和暂存,无需重新部署或重新映像或重新启动。
可能很久以前会问这篇帖子线程,但对于像我这样的人来说,这绝对有用: - )
答案 4 :(得分:0)