gpt4 book ai didi

c# - Azure webjob 如何访问托管站点文件夹

转载 作者:太空宇宙 更新时间:2023-11-03 13:07:20 35 4
gpt4 key购买 nike

我们在 Azure 中托管了我们的 ASP.Net 网站。我已经编写了一个连续的网络作业来在队列触发器的后台处理我的一些文件。有时,该过程涉及从 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);
}
}

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

最佳答案

您只能写入您网站的根文件夹。 Web 作业驻留在目录中。

app_data/jobs/continuous/etc

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

您遇到的问题似乎是 HostingEnvironment.MapPath() 正在返回空值。您可以修改 UPLOAD_URL 以确保您返回的不是 null 吗?要进行调试,当您在云中运行它并检查 Webjobs 仪表板中的输出时,您始终可以使用不同 HostingEnvironment.MapPath(UPLOAD_URL) 的 Console.Writeline()。

希望对您有所帮助,

编辑:

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

关于c# - Azure webjob 如何访问托管站点文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30317357/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com