Azure Web作业如何访问托管站点文件夹

本文关键字:站点 文件夹 访问 作业 Web 何访问 Azure | 更新日期: 2023-09-27 17:49:43

我们在Azure中托管了ASP.Net网站。我写了一个连续的web作业,在队列触发器的后台处理我的一些文件。有时这个过程包括从url中获取图像,并将副本保存在我们网站的预定义文件夹中。

我们已经在主站点的代码中有了一个获取图像并保存到文件夹的功能,所以我正在使用它。

在开发过程中,我手动运行.exe来检查触发器是否工作。在图像上传过程之前一切都很好。它无法将路径映射到给定的文件夹。代码如下,filepath变量始终为null,所以我在这里得到一个异常,作业失败。有更好的方法吗?这是因为我手动运行了作业,还是因为我使用了错误的功能?

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);
    }
}

感谢您对此的任何见解。谢谢

Azure Web作业如何访问托管站点文件夹

您只能写入网站的根文件夹。Web作业位于目录中。

app_data/jobs/continuous/etc

因此,当您映射路径时,请确保您正在尝试写入webjob所在网站的根文件夹。这里有更多信息。

您遇到的问题似乎是HostingEnvironment.MapPath((返回了一个null值。你能修改UPLOAD_URL以确保你返回的不是null吗?要进行调试,当您在云中运行此程序时,您可以始终使用不同HostingEnvironment.MapPath(UPLOAD_URL(的Console.Writeline((,并在Webjobs Dashboard中检查输出。

希望这能有所帮助,

编辑:

请尝试UPLOAD_URL="~/Uploads/",因为它看起来像是在搜索虚拟路径。来源

显然,您可以写入%HOME%'site'wwwroot,但这对我不起作用,所以我使用绝对路径写入Azure Web App中的任何位置:D:'home'site'wwwroot