2017-11-10 1 views
-1

전자 메일을 통해 Excel 스프레드 시트 첨부 파일을 보내는 C# 콘솔 응용 프로그램이 있습니다.C#이 올바른 파일 경로를 찾을 수 없습니다.

파일 경로를 App.config으로 지정했습니다. 파일을 찾으려고 할 때 코드는 적절한 위치를 조사합니다. 그러나 foreach 문 내부에 파일을 첨부하려고하면 코드의 bin 폴더를 찾습니다.

내가 뭘 잘못하고 있니?

DirectoryInfo dir1 = new DirectoryInfo(ConfigurationManager.AppSettings.Get("FilePath")); 
     FileInfo[] folderFiles = null; 
     folderFiles = dir1.GetFiles(); 



    foreach (FileInfo aFile in folderFiles) 
      { 


       message.Attachments.Add(new Attachment(aFile.Name)); 
      } 
+2

루프의'aFile.Name' 값은 무엇입니까? 디버거에서 살펴보십시오. 길은 없어, 그치? 경로를 제공하면 제공하는 경로를 찾습니다. 당신이하지 않으면, 그렇지 않습니다. 이것이 당신에게 무엇을 제안합니까? –

+0

내가 본 디렉토리의 FilePath를 제공했습니다. 그런 다음 ForEach 루프에서 디렉터리의 파일을 조사하도록 요청합니다. – SaraDob

+1

디버거에서 조사 식 창을 사용하여 런타임에 aFile.Name의 값을 검사합니다. 중단 점을 설정하고 디버거를 사용하십시오. 나는 이미 당신이하고있는 일을 정확히 이해하고 있으며, 코드가 실수로 생각한 바를 잘 알고 있습니다. 나는 네가하는 일을 정확히 이해하도록 돕고 자 노력하지만 참여해야만한다. –

답변

1

당신은 오히려 aFile.Name (파일 이름 만)보다 aFile.FullName이 (전체 경로를 포함)을 사용합니다. 명령이 예상 한대로 수행되지 않으면 설명서를 확인해야합니다.

또는, 당신은 간단하게 만들 수 : 단순히 전체 파일 이름을 반환하고, 그렇지 않으면 할 (예를 들어, Path.GetFileName를 사용하여) 그렇게하지에 대해 생각해야 할 것입니다

string dir1 = ConfigurationManager.AppSettings.Get("FilePath"); 
foreach(string aFile in Directory.EnumerateFiles(dir1)) 
{ 
    message.Attachments.Add(new Attachment(aFile)); 
} 

Directory.EnumerateFiles한다.

관련 문제