Как заставить FileTrigger работать с файловым хранилищем Azure в 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.

Как заставить триггер указывать на область хранилища файлов учетной записи хранения, которую я для него настроил. Я попытался полностью удалить FilesConfiguration из Program.cs в надежде, что он сработает против настроек, но создает только то же исключение.


person onesixtyfourth    schedule 10.07.2018    source источник


Ответы (1)


System.InvalidOperationException: путь 'D: \ home \ data \\' не существует.

Когда вы публикуете в Azure, каталог по умолчанию - D:\HOME\DATA, поэтому, когда вы запускаете веб-задание, он не может найти путь, поэтому вы получаете сообщение об ошибке.

Как заставить триггер указывать на область хранилища файлов учетной записи хранения, которую я для него настроил.

Установленная вами строка подключения имеет два применения: одно используется для ведения журнала панели мониторинга, а другое используется для функций приложения (очереди, таблицы, большие двоичные объекты).

Похоже, вы не смогли заставить filetrigger работать с файловым хранилищем Azure. Итак, если вы хотите активировать свой файловый триггер при создании нового файла, вы можете перейти к D:\home\data\ в KUDU, чтобы создать папку DIR, а затем создать в ней новый файл .txt.

Результат выглядит следующим образом:

введите здесь описание изображения

Кстати, похоже, что вам лучше не использовать autoDelete при создании файла, если вы используете, вы получите ошибку, например:

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

person Joey Cai    schedule 10.07.2018
comment
Да, и это именно то, что я делаю, но я надеялся, что смогу запустить его из хранилища файлов. Будем следить за автоудалением. Могу ли я смонтировать каталог в иерархии D: \ Data \ Home на моем локальном компьютере? - person onesixtyfourth; 10.07.2018
comment
Просто чтобы обновить это, я остановился на Blob и BlobTrigger для достижения того, что нам было нужно. - person onesixtyfourth; 13.07.2018
comment
Рад видеть, что вы решили свою проблему. Как я уже сказал, для этого вы можете использовать очередь, триггер blob. - person Joey Cai; 13.07.2018