2016-12-22 2 views
-3

Я пытаюсь подключиться к удаленному серверу и получить доступ к определенному каталогу на этом сервере для поиска файла, но по какой-то причине он показывает, что каталог не существует на сервере, даже если он действительно существует. Я предполагаю, что мой путь к файлу неверен. Может ли кто-нибудь предложить мне, если бы я сделал синтаксическую ошибку?Проблемы с доступом к серверу для файла в asp.net C#?

filepath = @"\\172.17.20.11\E$\MessageLogs\" + logType + "\\" + country + "\\" + year + "\\" + month + "\\" + day + "\\"; 

private void GetFiles(string filePath) 
    { 
     try 
     { 
      tblFileContent = new DataTable(); 
      getColumns(tblFileContent); 
      //C:\MessageLogs\ElmaCore\KENYA\2016\March\22 
      //filePath = @"C:\MessageLogs\"+filePath; //Pick a folder on your machine to store the uploaded files 

      if (!Directory.Exists(filePath)) 
      { 
       fn.MessageLine(this.Page, "Log folder does not exist.", System.Drawing.Color.Red, "lblMessageLine"); 
       dtDate.Focus(); 
       return; 
      } 

      string searchReference = txtReference.Text.Trim(); 
      //string filePath = System.Configuration.ConfigurationManager.AppSettings["InFolder"].ToString(); 

      DirectoryInfo DirInfo = new DirectoryInfo(filePath); 
      FileInfo[] CsvFiles = DirInfo.GetFiles("*" + searchReference + "*.log").OrderByDescending(p => p.LastWriteTime).ToArray(); 


      if (CsvFiles.Length > 0) 
      { 
       foreach (var file in CsvFiles) 
       { 
        string FileName = file.Name; 
        string sourceFile = System.IO.Path.Combine(filePath, FileName); 

        ProcessFile(FileName, sourceFile); 



       } 

       //LoadGrid(); 
      } 
      else { 
       fn.MessageLine(this.Page, "Sorry, No files found for the specified reference.", System.Drawing.Color.Red, "lblMessageLine"); 
       txtReference.Focus(); 
       return; 
      } 
     } 
     catch (Exception ex) 
     { 
      fn.MessageLine(this.Page, "Sorry an Error Occured. Please try again", System.Drawing.Color.Red, "lblMessageLine"); 
      ErrLogger.LogError("filelog-" + ex.Message); //oledbconn.Close(); 
      return; 
     } 

    } 
+3

Если вы сделали синтаксическую ошибку, она не будет компилироваться. Если каталог действительно существует, это проблема с разрешениями. – CodeCaster

+0

либо у вас нет разрешений, либо папка не используется в сети. (Предполагая, что вы подтвердили, что программа правильно генерирует имя папки) – ADyson

+0

См. Также [Directory.Exists не работает для сетевого пути] (http://stackoverflow.com/questions/10196811/directory-exists-not-working -для-а-сети-пути). – CodeCaster

ответ

0

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

Также обратите внимание, что после развертывания в IIS измените идентификатор приложения для пользователя домена, у которого есть разрешение.

Если вы хотите проверить, есть ли проблема с разрешением, чем это сделать. Щелкните правой кнопкой мыши в этой папке и дайте разрешение всем и проверьте.