【发布时间】:2014-02-28 21:28:24
【问题描述】:
我为 Azure 网站创建了一个启动任务,该任务执行以下操作:
- 创建应用程序池
- 将虚拟目录转换为虚拟应用程序
我创建了一个执行这些任务的 powershell 脚本。
我已经在服务定义中设置了启动元素
<Startup>
<Task commandLine="MyStartup.cmd" executionContext="elevated" taskType="simple">
</Task>
</Startup>
到目前为止一切顺利。
但是,I've found out, rather late,那:
在启动任务阶段,IIS 可能未完全配置 启动过程,因此特定于角色的数据可能不可用。
我认为这意味着当运行 powershell 脚本时,该网站可能不存在于 IIS 上。我已经测试了脚本,果然它失败了,因为它在 IIS 上找不到虚拟目录。
我的问题是:有没有办法确保在 IIS 上创建网站之后运行 powershell 脚本?
请注意,如果可能的话,我真的不想使用Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint.OnStart。
提前致谢。
【问题讨论】:
-
我们在 WebRoles 上为我们的产品使用 OnStart,它还不错。您可以创建自己的小型启动工厂,在 blob 存储上具有 powershell 脚本,然后在云服务启动时同步脚本,您可以将配置存储在 blob 存储中,也可以将配置存储到要运行的脚本。通过这种方式,您可以很容易地更新和维护您未来可能创建的 webroles 的启动体验。但启动任务将在 IIS 设置之前运行。我们的产品之一实际上是在 OnStart 中清理 IIS 并从 blob 存储中进行我们自己的网站设置。
-
@pksorensen 我不想使用 OnStart 的原因是这取决于 C#。如果我错了,请纠正我。
-
您可以从 c# 启动进程或运行 powershell 脚本。
标签: iis azure azure-web-roles