我正在尝试更改 Windows Azure 上已部署的云服务(在本例中为 WCF)的 web.config,当我尝试在运行时更改 web.config 中的 appSettings 时,出现权限被拒绝错误:
Access to the path 'E:\sitesroot\0\web.config' is denied.
有没有办法解决这个问题?
强尼 S是对的。您应该将要在运行时更改的设置存储在角色配置中。如果 Azure 移动您的web.config
VM,更改将丢失,并且在多实例方案中,您的实例将不同步。您可以使用roleenvironmentchanging
事件来管理角色实例如何响应配置更改。
有关roleenvironmentchanging
事件检查的更多信息http://msdn.microsoft.com/en-us/library/windowsazure/gg432963.aspx
您应该将运行时需要更改的任何设置存储在角色的 ServiceConfiguration (cscfg) 中,然后在代码中使用以下内容来检索设置:
string setting = RoleEnvironment.GetConfigurationSettingValue("myConfigSetting");
部署后,您可以通过管理门户更改 ServiceConfiguration 中的值。
如果您 RDP 进入 web 角色,您应该能够为登录用户添加权限到 web.config 文件。然后您可以修改 web.config。正如@Adil 提到的那样,这将导致 AppDomain 回收,因此只能作为最后的手段。