2015-10-21 2 views
0

Я пытаюсь сохранить файл в папку на сервере. Я запускаю приложение локально на сервере Cassini-Local Dev и сохраняю файл на сервере, где приложение размещено в IIS. Папка позволяет сетевому сервису создавать/читать/записывать файлы в эту папку.Сохранение файла в сетевой папке с использованием asp.net mvc

string destinationPath = string.Format("{0}\\{1}\\{2}\\{3}\\", @"\\server\G:\xyz\xyStore\uploads\Files\", uploadDate.ToString("yyyy"), uploadDate.ToString("MMM"), uploadDate.ToString("dd")); 

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

         //Save File To Folder 
         string storedFileName = string.Format("{0}{1}.{2}", destinationPath, System.Guid.NewGuid(), Path.GetExtension(file.FileName).ToUpper()); 
         file.SaveAs(storedFileName); 
         miscFile.FileStoredName = storedFileName; 

Я продолжаю получать ошибку

формат данного пути не поддерживается

+1

AppPool также необходимо иметь права доступа к папке. – LGSon

+0

@ "\\ server \ G: \ xyz \ xyStore \ uploads \ Files \" = Я не думаю, что это сработает, папка должна быть общей, и вы должны иметь доступ к папке как @ "\\ server \ xyz \ xyStore \ uploads \ Files \ " –

+0

Его папка на сервере, где размещается приложение. Я считаю, что AppPool имеет права доступа к папке, потому что папка разрешает доступ к сетевому сервису, и я запускаю его локально. Даже запускал его под IIS локально и с той же проблемой –

ответ

0

Попробуйте подключить сетевую папку первой. У нас есть что-то похожее на ваши потребности

public void ConnectToUnc(string remoteUnc, string userName, string passwrod) 
    { 
     NETRESOURCE nr = new NETRESOURCE(); 
     // Disk 
     nr.dwType = 0x00000001; 
     nr.lpRemoteName = remoteUnc; 

     // Try to connect to remote UNC (non-interactive, withod drive mapping) 
     int ret = WNetUseConnection(IntPtr.Zero, nr, passwrod, userName, 0, null, null, null); 
     if (ret != 0) 
     { 
      throw new Exception("Error connecting to UNC: " + ret); 
     } 
     var files = Directory.GetFiles(remoteUnc); 
    } 

Импорт Windows API

[DllImport("Mpr.dll")] 
    private static extern int WNetUseConnection(
     IntPtr hwndOwner, 
     NETRESOURCE lpNetResource, 
     string lpPassword, 
     string lpUserID, 
     int dwFlags, 
     string lpAccessName, 
     string lpBufferSize, 
     string lpResult 
     ); 


    [StructLayout(LayoutKind.Sequential)] 
    private class NETRESOURCE 
    { 
     public int dwScope = 0; 
     public int dwType = 0; 
     public int dwDisplayType = 0; 
     public int dwUsage = 0; 
     public string lpLocalName = ""; 
     public string lpRemoteName = ""; 
     public string lpComment = ""; 
     public string lpProvider = ""; 
    } 

Link to MSDN

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