在Web角色中部署时更改文件

时间:2013-09-26 11:59:55

标签: azure

我最近开始研究Windows Azure并且有一个Web角色项目,我必须在Azure中启动WebRole时更新遗留代码相关文件中的一个配置条目。我想在RoleEntryPoint.OnStart()事件中访问网站上的文件,并在网站启动前更新相关文件。

该文件存在于WebRole项目的其中一个文件夹中。我的服务定义文件有默认条目:

<Sites>
  <Site name="Web">
    <Bindings>
      <Binding name="Endpoint1" endpointName="Endpoint1" />
    </Bindings>
  </Site>
</Sites>

因此项目代码存在于AppRoot(内容在这里)和站点机器上的sitesroot ......

环境变量 - RoleRoot, RdRoleRootAppDomain.CurrentDomain.BaseDirectory似乎提供了文件夹位置...所以我不确定使用哪个来更新我的文件以及在哪个位置(approot或{ {1}})所以我正在运行的应用程序访问正确的文件。

有关如何操作以及要更新的文件的任何指示都将非常感激。

2 个答案:

答案 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标签下面。