今天我开始使用运行node.js脚本的Azure Web Jobs,该脚本在同一目录中输出一个json文件。我现在想使用http来使用该文件,但是我无法弄清楚正确的uri是什么。 我认为它必须类似于日志的位置(顺便说一下。告诉我作业成功运行),但我似乎无法找到json文件。 难道不是这样的吗? https://SiteName.scm.azurewebsites.net/JobName/output.json
编辑: 我刚刚使用Webmatrix打开了网站,虽然我可以找到作业文件(在/ App_Data / jobs / triggered / JobName下),但似乎json文件没有保存,尽管日志是这样说的。任何人都知道你是否可以在这样的webjob中保存文件?
fs.writeFile(outputFilename, JSON.stringify(output, null, 4), function(err) {
if(err) {
console.log(err);
} else {
console.log("JSON saved to " + outputFilename);
}
});
顺便说一下。如果要使用Azure服务静态JSON,则必须编辑Web.config: http://blogs.msdn.com/b/africaapps/archive/2013/06/07/how-to-serve-static-json-files-from-a-windows-azure-website.aspx
答案 0 :(得分:4)
文件不在WebJob的二进制文件旁边的原因是,在调用WebJob之前,它首先被复制到临时目录(%temp%\jobs\triggered\jobName\randomName
)并从那里运行,这样就没有锁定文件了可以随时更新WebJob的二进制文件。
使用WebJob保存文件时使用的适当路径是使用 WEBROOT_PATH 环境变量,因为它具有指向wwwroot的路径。
如果您希望此文件仅可以私下访问(因为wwwroot是公开可见的),您可以上升一级,例如:%WEBROOT_PATH%/../output.json
。
另一种选择是使用:d:\home
,因为上下文wwwroot位于:d:\home\site\wwwroot
。
要访问该文件,请使用以下网址:https://SiteName.scm.azurewebsites.net/vfs/site/output.json,您需要提供部署凭据。