首页 > 解决方案 > 如何让 FileTrigger 在 Webjob 中使用 Azure 文件存储

问题描述

我有一个设置为在将文件添加到目录时触发的网络作业:

[FileTrigger(@"<DIR>\<dir>\{name}", "*", WatcherChangeTypes.Created, autoDelete: true)] Stream file,

我已经配置好了:

var config = new JobHostConfiguration
                {
                    JobActivator = new NinjectActivator(kernel)
                };
                var filesConfig = new FilesConfiguration();
#if DEBUG
                filesConfig.RootPath = @"C:\Temp\";
#endif
                config.UseFiles(filesConfig);
                config.UseCore();

该路径用于在本地工作,我期望注释掉 FilesConfiguration 对象并将其保留为默认值将允许它获取我设置的连接字符串并在添加文件时触发。事实证明,默认情况下,RootPath 设置为“D:\Home”并产生 InvalidOperationException

System.InvalidOperationException : Path 'D:\home\data\<DIR>\<dir>' does not exist.

如何让触发器指向我为其设置的存储帐户的文件存储区域。我已经尝试从 Program.cs 中完全删除 FilesConfiguration,希望它可以对设置起作用,但它只会产生相同的异常。

标签: azureazure-webjobsazure-webjobssdkazure-webjobs-triggered

解决方案


System.InvalidOperationException:路径 'D:\home\data\\' 不存在。

当您发布到 azure 时,默认目录D:\HOME\DATA,因此当您运行 webjob 时,它找不到路径,因此您会收到错误消息。

如何让触发器指向我为其设置的存储帐户的文件存储区域。

您设置的连接字符串有两个应用:一个用于仪表板日志记录,另一个用于应用程序功能(队列、表、blob)。

您似乎无法让 filetrigger 与 azure file storage 一起使用。因此,如果您想在创建新文件时调用文件触发器,您可以D:\home\data\KUDU中创建一个DIR文件夹,然后在其中创建新的 .txt 文件。

输出如下:

在此处输入图像描述

顺便说一句,似乎你最好不要autoDelete在创建文件时使用,如果使用你会得到如下错误:

NotSupportedException: Use of AutoDelete is not supported when using change type 'Changed'.


推荐阅读