我最近开始研究Windows Azure
并且有一个Web角色项目,我必须在Azure中启动WebRole时更新遗留代码相关文件中的一个配置条目。我想在RoleEntryPoint.OnStart()
事件中访问网站上的文件,并在网站启动前更新相关文件。
该文件存在于WebRole
项目的其中一个文件夹中。我的服务定义文件有默认条目:
<Sites>
<Site name="Web">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" />
</Bindings>
</Site>
</Sites>
因此项目代码存在于AppRoot(内容在这里)和站点机器上的sitesroot ......
环境变量 - RoleRoot, RdRoleRoot
和AppDomain.CurrentDomain.BaseDirectory
似乎提供了文件夹位置...所以我不确定使用哪个来更新我的文件以及在哪个位置(approot
或{ {1}})所以我正在运行的应用程序访问正确的文件。
有关如何操作以及要更新的文件的任何指示都将非常感激。
答案 0 :(得分:1)
您需要更改的文件夹是sitesroot文件夹,因为这是IIS配置为从中运行您的网站的位置。查询sitesroot文件夹的位置并不是一种非常干净的方法,所以最好的选择是:
sitesroot = Path.Combine(Environment.GetEnvironmentVariable("RoleRoot") + @"\", @"sitesroot\0")
答案 1 :(得分:0)
我最近有类似的需求。看看这篇博客文章,了解如何修改web.config OnStart
http://blog.elastacloud.com/2011/05/13/azure-howto-programmatically-modify-web-config-on-webrole-startup/
对我来说,这比寻找一些环境变量更清洁。另一件需要记住的事情是,您需要在提升的上下文中运行您的角色来修改文件。在您的CSDEF中,添加
<Runtime executionContext="elevated"/>
就在WebRole XML标签下面。