2016-08-31 2 views
3

업로드 된 파일을 가져 오기 위해 FileTrigger를 어떻게 사용할 수 있습니까?Azure WebJobs with storage file share

구성 코드 :

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

웹 작업 공유에 관심이 있습니다. 누군가 지식을 공유 할 수 있습니까? –