Azure Webjob - 访问本地文件系统

Posted

技术标签:

【中文标题】Azure Webjob - 访问本地文件系统【英文标题】:Azure Webjob - accessing local file system 【发布时间】:2016-01-01 17:21:33 【问题描述】:

我有一个遗留的 exe,它采用本地机器文件路径,处理它并再次在本地路径中生成输出文件。这可以在 Azure Webjob 上运行吗?

我正在考虑编写一个包装 exe,它从 blob 存储下载文件 -> 将其存储在本地文件系统中 -> 使用本地文件路径调用旧版 exe -> 获取输出并再次将其上传到 blob。

这种方法会奏效还是有局限性?

【问题讨论】:

我知道这篇文章现在已经过时了,但你最终找到解决方案了吗?我必须尝试通过网络作业访问本地文件路径。 【参考方案1】:

如果您最终编写了一个包装器,那么您可能会对 WebJobs SDK 的文件绑定扩展感兴趣:https://github.com/Azure/azure-webjobs-sdk-extensions。例如:

    // When new files arrive in the "import" directory, they
    // are uploaded to a blob container then deleted.
    public static void ImportFile(
        [FileTrigger(@"import\name", "*.dat", autoDelete: true)] Stream file,
        [Blob(@"processed/name")] CloudBlockBlob output,
        string name,
        TextWriter log)
    
        output.UploadFromStream(file);
        file.Close();

        log.WriteLine(string.Format("Processed input file '0'!", name));
    

【讨论】:

感谢 mathewc。我将尝试文件绑定扩展。【参考方案2】:

只要您将要写入/写入的文件夹传递给它,此类 exe 应该可以正常运行。在进入 WebJobs 之前,我建议使用 Kudu Console 在 Web 应用程序中手动测试它,以确保它运行良好。

然后,如果您的目标是让它与 blob 输入/输出一起工作,那么包装器 exe 应该可以工作。显然,让它直接与博客流一起工作会更干净,但如果遗留 exe 是给定的并且无法更改,那么包装器方法应该没问题。

【讨论】:

谢谢大卫。我会试试 Kudu 控制台 我在 Kudu 控制台中尝试了以下发现:旧版 exe 对 Windows SDK (如 Windows 8.1 SDK 和 Phone SDK)有一些依赖性,因此无法运行。是否有可能在 Azure WebJob 上继续运行此旧版 exe? 只有找到一种方法来带来相关的依赖项,它才能运行(如果它是低级系统的东西,并不总是可能的)。 ig 没有办法通过 Kudu 控制台使其工作,那么它也无法通过 WebJobs 工作,因为它们都在相同的环境中运行。

以上是关于Azure Webjob - 访问本地文件系统的主要内容,如果未能解决你的问题,请参考以下文章

Azure WebJob“无法创建 SSL/TLS 安全通道”

如何防止 Azure webjob 同时多次处理相同的消息

NET 5.0 WebJob 只想写入我的本地 Blob 存储

允许来自Azure中的暂存插槽中的webjob的流量

通过 Azure 访问本地资源

7.Azure文件(文件共享)-NAS(上)