2015-06-22 72 views
1

在Azure上運行的WebJob似乎沒有將< Content>文件(如果是Newer,則複製)放到正確的目錄中。使用靜態內容文件部署WebJob

我得到以下錯誤:

System.IO.DirectoryNotFoundException: Could not find a part of the path 'D:\local\Temp\jobs\continuous\LongTasks\lprysn1r.tsv\Content\File.cshtml

我嘗試訪問該文件爲這樣: File.ReadAllText("Content/File.cshtml");

在本地運行,它工作得很好。

有沒有辦法讓這個靜態文件適當放下?

+0

當您通過FTP進行部署時,您可以檢查文件是否存在。另外,請記住,你只能從webjob的文件夾中讀取,你不能寫入該位置。 – lopezbertoni

+0

@lopezbertoni我嘗試過,但它似乎沒有部署在我可以訪問的地方?它似乎在本地/ Temp – jsgoupil

+0

您可以從發佈配置文件中獲取FTP憑據。 Webjob部署到Web應用程序文件夾結構中的app_data文件夾。如果文件未正確部署,您可以隨時通過FTP手動複製。也許這有助於:http://stackoverflow.com/questions/27495492/publish-azure-webjob-including-all-items-from-bin-folder/27504190#27504190 – lopezbertoni

回答

0

做一些測試後,該公約是他們做的/斌/釋放文件夾的淺拷貝到App_Data文件/工作/連續/ LongTasks/

這意味着,如果有任何文件夾,它們不會被複制。 將「File.cshtml」移至根目錄可修復此問題。

我知道這與Azure WebJobs SDK沒有完全相關,但是這發生在2015年6月22日版本1.0.0。

0

您應該使用WEBJOBS_PATH當前正在運行的webjob的環境變量。

var webjobPath = Environment.GetEnvironmentVariable("WEBJOBS_PATH"); 

if (string.IsNullOrWhiteSpace(webjobPath)) 
{ 
    // Handle dev environment 
    webjobPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 
} 

這將返回象d一些路徑:\本地的\ Temp \ \工作觸發\\ xxeeeexxx.qzx \,它包含內容的文件和文件夾。