2015-12-01 3 views
1

В моей текущей программе, у меня есть основной метод, который содержитДоступ к пути запрещен после того, как он уже доступен?

using (NetworkShareAccessor.Access(---credentials etc---) 
{ 
     (string latest = new DirectoryInfo(---folder on the network---).GetDirectories().OrderByDescending(d => d.LastWriteTimeUTC).First().ToString(); 

     CopyFiles(latest, "---folder---", "---file name---"); 
} 

Это успешно осуществляет доступ к сетевой папке, и я знаю, потому что, если я выбираю Console.WriteLine (последнее), он выводит нужную папку на консоль, доказывая, что к коду подключен. Однако, в моем методе CopyFiles, я получаю необработанное исключение, которое гласит:

Доступ к пути «--- месте пути ---» Отказано

мне нужно использовать внешний метод и не может просто поместить все это в Main(), потому что он будет использоваться в другом месте и повторен, поэтому имеет смысл иметь собственный метод и передавать разные параметры, содержащие имя папки и имя файла.

Я уже пробовал поместить все внутри метода CopyFiles в свой собственный оператор using, который я использовал в основном методе, но это тоже не работает. FYI здесь код, используемый в CopyFiles Method

static void CopyFiles(string mostRecentFolder, string installerFolder, string installerName) 
    { 
     string sourcePath = string.Format(@"\\---network directory---\{0}\{1}", mostRecentFolder, 
      installerFolder, installerName); 
     string targetPath = string.Format(@"C:\Temp\"); 

     if (!Directory.Exists(targetPath)) 
      Directory.CreateDirectory(targetPath); 

     string sourceFile = Path.Combine(sourcePath, installerName); 
     string destFile = Path.Combine(targetPath, installerName); 

     File.Copy(sourcePath, destFile, true); 
    } 
+0

в этой строке 'File.Copy (sourcePath, destFile, true);' помещает точку останова и сообщает нам, что такое значение 'sourcePath и destFile' .. также лучший способ узнать, имеете ли вы доступ к сети каталог либо вручную проверит ваши разрешения, либо перейдет к этому сетевому ресурсу и посмотрит, можно ли вручную создать пустой текстовый файл. Не делайте ничего при кодировании. – MethodMan

+0

@MethodMan оба значения - это то, что я ожидал бы от них, и вручную, я _am_ могу создать файл txt и манипулировать файлами и папками и т. д. –

+0

вы можете показать нам значения (и) тоже это неверно .. 'string sourcePath = string.Format (@" \\ --- сетевой каталог --- \ {0} \ {1} ", mostRecentFolder, installerFolder, installerName);' где is '" {2} "' – MethodMan

ответ

1

У вас есть: File.Copy (sourcePath, destFile, true);

Попытка: File.Copy (исходный код, destFile, true);

+0

Ah - да, пожалуйста, добавьте некоторые уточнения - beca они имеют две очень похожие переменные, они, похоже, использовали 'sourcePath', когда' sourceFile' является более очевидным значением для использования. –

+0

@Steji намного лучше – MethodMan

+0

Спасибо @Steji, я ожидал, что это будет что-то маленькое и тривиальное! –

0

Try включая ваше имя файла в пути, это, кажется, причина вашей ошибки.

Смежные вопросы