我正在尝试在Azure Web(或工作者)角色上启动PhantomJs的本地Web服务器实例,以与HighCharts一起使用来呈现服务器端图表图像。
PhantomJs只是一个简单的.exe
,可以使用以下命令作为网络服务器启动:
phantomjs highcharts-convert.js -host 127.0.0.1 -port 3003
...然后可以针对它发出本地HTTP POST请求。
我已将此命令包含在startup.cmd
批处理脚本中,该脚本配置为在通过ServiceDefinition.csdef
发布时使用我的Azure Web角色执行:
<Startup>
<Task commandLine="startup.cmd" executionContext="elevated" taskType="background" />
</Startup>
STARTUP.CMD:
START phantomjs highcharts-convert.js -host 127.0.0.1 -port 3003
EXIT /B 0
据我所知,这似乎在启动时执行正常,但是,该过程不会继续运行。它只是执行和关闭。例如,我可以远程进入框中,找到部署并手动执行startup.cmd
(命令窗口打开并保持打开状态),一切正常。
如何在实例启动时执行PhantomJs exe webserver到它继续运行但未关闭的位置?
我尝试在taskType
声明中将simple
设置为background
和ServiceDefinition.csdef
,但它似乎无法改变任何内容。
答案 0 :(得分:1)
如果它正在执行,它可能是一个计时问题。您可以添加以下内容:
ping 1.1.1.1 -n 1 -w 300000 > nul
在执行脚本之前。
您也可以输出到日志文件,因此如果执行它您可以看到它正在做什么。 &GT;&GT; log.txt中。
如果它没有执行,我可能会看到它在后台执行而不是交互式的路径。
答案 1 :(得分:1)
事实证明我没有将支持.js
文件设置为“复制到输出目录”,因此startup.cmd
无法找到它们。
感谢Steve提供的输出日志记录建议,这让我看到了无法找到“highcharts-convert.js”的错误。