繁体   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