0

我在 WebRole 启动期间调用了一个 C# 控制台应用程序来执行自定义检测。我希望该程序能够从服务配置中读取最新值并采取相应措施。

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

4

1 回答 1

1

如果您将调用此可执行文件作为 .csdef 中的启动任务,则您要求的信息可能不可用,因为尚未设置角色(请参阅Web/Worker 角色的生命周期)。

如果您在 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();
于 2013-02-20T14:10:20.570 回答