如何让 FileTrigger 在 Webjob 中使用 Azure 文件存储

How to get FileTrigger to work with Azure file storage in Webjob

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

[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,希望它能对这些设置有效,但它只会产生相同的异常。

System.InvalidOperationException : Path 'D:\home\data\' does not exist.

当你发布到 Azure 时,default directoryD:\HOME\DATA,所以当你 运行 webjob 时它找不到路径所以你得到错误消息。

How do I get the trigger to point at the File storage area of the storage account I have set up for it.

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

似乎您无法让 filetrigger 使用 azure 文件存储。 所以,如果你想在创建新文件时调用你的 filetrigger,你可以去 KUDU 中的 D:\home\data\ 创建一个 DIR 文件夹,然后创建新的 . txt 文件。

输出如下:

顺便说一句,你创建文件的时候好像最好不要使用autoDelete,如果使用你会得到这样的错误:

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