2014-02-14 33 views
0

今天我開始使用運行node.js腳本的Azure Web作業,該腳本在同一目錄中輸出json文件。我想現在使用http來使用該文件,但我無法弄清楚正確的uri是什麼。 我認爲它必須與日誌的位置相似(順便說一下,工作成功運行),但我似乎無法找到json文件。 不應該是這樣的嗎? https://SiteName.scm.azurewebsites.net/JobName/output.json使用node.js Azure Web作業輸出文件的URI

編輯: 我剛打開使用WebMatrix的網站,雖然我能找到的工作文件(在/ App_Data文件/工作/觸發/作業名),這似乎是JSON文件未保存,雖然日誌這樣說。任何人都知道,如果你可以像這樣在webjob中保存文件?

fs.writeFile(outputFilename, JSON.stringify(output, null, 4), function(err) { 
    if(err) { 
     console.log(err); 
    } else { 
     console.log("JSON saved to " + outputFilename); 
    } 
}); 

Btw。如果要使用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

回答

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

要訪問該文件,請使用以下URL:https://SiteName.scm.azurewebsites.net/vfs/site/output.json,您需要提供部署憑據。

+0

這將起作用,但您確實不應將文件寫入您的網站的文件系統。將它寫入blob存儲。 –

+0

謝謝,我能夠實現我想要使用這樣的URI: var outputFilename ='d:\\ home \\ site \\ wwwroot \\ output.json'; %WEBROOT_PATH%對我來說不起作用(我用它錯誤地使用了它......) @MarkRendle在這種情況下使用blob的優點是什麼?使用簡單的http reqeust來使用json還是可以使用的嗎? – Thomas

+1

@Thomas,看起來你不能使用環境變量作爲常規路徑的一部分。 (至少不用我試過的Path類方法。)但是,你可以通過'Environment.GetEnvironmentVariable(「WEBR​​OOT_PATH」)'獲得值,或者使用'Environment.ExpandEnvironmentVariables()'來解析你的字符串。 – MEMark