0

我最近开始研究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似乎给出了文件夹位置......所以我不确定使用哪个来更新我的文件以及在什么位置(approotsitesroot),以便我正在运行的应用程序访问正确的文件。

任何有关如何执行此操作以及要更新哪个文件的指示将不胜感激。

4

2 回答 2

1

您需要更改的文件夹是 sitesroot 文件夹,因为这是配置 IIS 来运行您的网站的位置。没有一种非常干净的方法来查询 sitesroot 文件夹的位置,所以你最好的选择是:

sitesroot = Path.Combine(Environment.GetEnvironmentVariable("RoleRoot") + @"\", @"sitesroot\0")

于 2013-09-26T16:29:06.543 回答
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 标记下添加。

于 2013-09-27T13:32:53.687 回答