簡體   English   中英

Azure 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM