从启动脚本调用的C#程序访问Azure Service配置

时间:2013-02-20 05:50:13

标签: c# .net azure

我在启动WebRole期间调用了一个C#控制台应用程序来执行自定义检测。我希望这个程序能够从Service Config中读取最新的值并采取相应的行动。

我已经设置了调用我的.EXE以在提升模式下运行的启动脚本。我已将Azure的ServiceRuntime引用添加到控制台应用程序,但是我收到以下错误:角色发现数据不可用

1 个答案:

答案 0 :(得分:1)

如果您将此可执行文件作为启动任务放在.csdef中,那么您要求的信息可能无法使用,因为该角色尚未设置(请参阅lifecycle of Web/Worker role )。

如果您在WebRole.cs中调用OnStart中的可执行文件,这也可能是问题 - 因为IISConfigurator与OnStart异步调用。

对于启动任务,可以在http://mvolo.com/configure-iis-websites-windows-azure-startup-tasks-appcmd/详细解决此问题(虽然它涉及更改IIS配置)。

对于WebRole问题,您可以重载Run()并从那里调用可执行文件 - 可能需要重试:

 while (!RoleEnvironment.IsAvailable) {
     Thread.Sleep(1000);
 }
 RunExecutable();