[英]How can i get the path to an image file in wwwroot folder of an azure hosted asp .net core app inside a webjob
[英]Azure webjob how to access hosted site folder
我們在 Azure 中托管了我們的 ASP.Net 網站。 我已經編寫了一個連續的 Web 作業來在隊列觸發器的后台處理我的一些文件。 有時該過程涉及從 url 獲取圖像並將副本保存在我們網站的預定義文件夾中。
我們已經有一個獲取圖像並保存到主站點代碼中的文件夾的功能,所以我正在使用它。
在開發過程中,我手動運行 .exe 以檢查觸發器是否有效。 一切都很好,直到圖像上傳過程。 它無法將路徑映射到給定文件夾。 代碼如下,文件filepath
變量始終為空,所以我在這里遇到異常並且作業失敗。 有一個更好的方法嗎? 這是因為我手動運行了這項工作,還是因為我以錯誤的方式使用了某些功能?
public class MyHelper
{
public const string UPLOAD_URL = "/Uploads/";
// other functions
// ....
private static void GetFileLocation(string prefix, string imageName, out string fileUrl, out string saveLocation)
{
var filename = imageName;
// filepath is always null
var filePath = HostingEnvironment.MapPath(UPLOAD_URL);
fileUrl = Path.Combine(UPLOAD_URL, filename);
// this here throws the exception because filepath is null
saveLocation = Path.Combine(filePath, filename);
}
}
感謝您對此的任何見解。 謝謝!!
您只能寫入網站的根文件夾。 webjob 駐留在目錄中。
app_data/jobs/continuous/etc
因此,當您映射路徑時,請確保您嘗試寫入 webjob 所在網站的根文件夾。 這里有更多信息。
您遇到的問題似乎是 HostingEnvironment.MapPath() 返回空值。 您能否修改 UPLOAD_URL 以確保您返回的不是空值? 要進行調試,您始終可以在雲中運行時使用不同 HostingEnvironment.MapPath(UPLOAD_URL) 的 Console.Writeline() 並檢查 Webjobs 儀表板中的輸出。
希望這可以幫助,
編輯:
嘗試 UPLOAD_URL = "~/Uploads/" 因為它看起來像是在搜索虛擬路徑。 來源。
顯然您可以寫入%HOME%\\site\\wwwroot
,但這對我不起作用,所以我使用絕對路徑寫入 Azure Web 應用程序中的任何位置: D:\\home\\site\\wwwroot
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.