2016-08-31 8 views
3

Как я могу использовать FileTrigger для загрузки моего загруженного файла?Azure WebJobs с файлом хранилища

Код конфигурации:

public class Program 
{ 
    // Please set the following connection strings in app.config for this WebJob to run: 
    // AzureWebJobsDashboard and AzureWebJobsStorage 
    public static void Main() 
    { 

     JobHostConfiguration jobConfiguration = new JobHostConfiguration(); 
     FilesConfiguration fileConfiguration = new FilesConfiguration(); 

     jobConfiguration.UseFiles(fileConfiguration); 
     jobConfiguration.UseTimers(); 

     var host = new JobHost(jobConfiguration); 

     // The following code ensures that the WebJob will be running continuously 
     host.RunAndBlock(); 
    } 
} 

Следующий код дает ошибку при запуске WebJob

public static void ProcessXml([FileTrigger(@"XML\{name}", "*.xml", autoDelete: true)] Stream file, string name, TextWriter log) 
    { 
     try 
     { 
      TextReader reader = new StreamReader(file); 
      ProcessFile(reader); 
     } 
     catch (Exception ex) 
     { 
      log.WriteLine(string.Format("Ao processar o arquivo '{0}', o seguinte erro ocorreu: {1}", name, ex.Message)); 
     } 
     log.WriteLine(string.Format("Arquivo '{0}' processado!", name)); 
    } 

Ошибка:

[08/31/2016 21:59:39 > 0d02fe: INFO] Found the following functions: 
[08/31/2016 21:59:39 > 0d02fe: INFO] XXXX.jobs.Functions.ProcessXml 
[08/31/2016 21:59:39 > 0d02fe: ERR ] 
[08/31/2016 21:59:39 > 0d02fe: ERR ] Unhandled Exception: System.InvalidOperationException: Path 'D:\home\data\XML' does not exist. 
[08/31/2016 21:59:39 > 0d02fe: ERR ] at Microsoft.Azure.WebJobs.Files.Listeners.FileListener.CreateFileWatcher() 
[08/31/2016 21:59:39 > 0d02fe: ERR ] at Microsoft.Azure.WebJobs.Files.Listeners.FileListener.<StartAsync>d__6.MoveNext() 

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

Благодарим за помощь.

ответ

0

Вы можете увидеть, за исключением кода Бросив here:

if (!Directory.Exists(_watchPath)) 
{ 
    throw new InvalidOperationException(string.Format("Path '{0}' does not exist.", _watchPath)); 
} 

Это требует папку существовать до начала работы хоста.

Быстрый обходной путь, чтобы создать каталог, прежде чем начать работу:

public class Program 
{ 
    // Please set the following connection strings in app.config for this WebJob to run: 
    // AzureWebJobsDashboard and AzureWebJobsStorage 
    public static void Main() 
    { 

     if(!System.IO.Directory.Exists(@"D:\home\data\XML")) 
     { 
       System.IO.Directory.Create(@"D:\home\data\XML"); 
     } 

     JobHostConfiguration jobConfiguration = new JobHostConfiguration(); 
     FilesConfiguration fileConfiguration = new FilesConfiguration(); 

     jobConfiguration.UseFiles(fileConfiguration); 
     jobConfiguration.UseTimers(); 

     var host = new JobHost(jobConfiguration); 
     host.RunAndBlock(); 
    } 
+1

Здравствуйте, Андрей, спасибо за ваше время. Извините, если я не был ясен в вопросе, проблема в том, что мне нужно использовать общий доступ к файлам в моей учетной записи хранилища (например, Blob, Queue). WebJob опубликовал переменную среды% HOME% как папку, и это не то, что мне нужно. Мне нужно использовать путь к моей учетной записи хранилища. Как это сделать? –

+0

Я также заинтересован в том, чтобы установить общий ресурс в веб-работу. Может ли кто-то поделиться некоторыми знаниями? –