2012-06-04 136 views
0

這是一個web應用程序 我有2個pc的:答:192.168.1.200和B:192.168.1.201,我想從A複製到B,這個代碼工作是單個PC,但它不工作在網絡中。在本地網絡中複製文件

protected void Button1_Click(object sender, EventArgs e) 
{ 
    string sourcePath = @"D:\Source\"; 

    string[] filePaths = Directory.GetFiles(sourcePath, "*.txt"); 
    foreach (string a in filePaths) 
    { 
     CopyFiles(a, a.Replace("D:\\Source\\", "D:\\Source1\\New\\")); 
     //CopyFiles(a, a.Replace("D:\\Source\\", "192.168.1.201\\Source1\\New\\")); 
    } 

} 

private bool CopyFiles(string Source, string Destn) 
{ 
    try 
    { 
     if (File.Exists(Source) == true) 
     {   
      File.Copy(Source, Destn); 
      return true; 
     } 
     else 
     { 
      Response.Write("Source path . does not exist"); 
      return false; 
     } 
    } 
    catch (FileNotFoundException exFile) 
    { 
     Response.Write("File Not Found " + exFile.Message); 
     return false; 
    } 
    catch (DirectoryNotFoundException exDir) 
    { 
     Response.Write("Directory Not Found " + exDir.Message); 
     return false; 
    } 
    catch (Exception ex) 
    { 
     Response.Write(ex.Message); 
     return false; 
    } 
} 
+0

如果要將這些文件粘貼到其他計算機桌面上,我將使用IPv4地址,然後提供如下路徑:C:\\ Users \\ ASUS \\ Desktop \\? https://stackoverflow.com/a/10883763/9087709 –

回答

0

嘗試用:

CopyFiles(a, a.Replace("D:\\Source\\", "\\192.168.1.201\\Source1\\New\\")); 

您還需要確保該文件夾源1在B共享,而且你必須把它寫訪問。

0

您是否在接收機上創建了Windows共享「Source1」? 如果你沒有,我會嘗試將其安裝到您的發送者機器上的代碼更改爲:

CopyFiles(a, a.Replace("D:\\Source\\", "\\\\192.168.1.201\\Source1\\New\\")); 
0

你必須被允許在目標機器上寫。這裏可以使用一輪工作,您可以創建一個指向網絡位置的虛擬驅動器,例如Z :.現在你可以使用本地符號。但在此之前,確保遠程PC上的權限。

+0

我得到錯誤... System.Security.SecurityException:提供的名稱不是一個正確形成的帳戶名稱。 – emsk

+0

你使用任何網絡證書!看來你不能在遠程機器上登錄。 –

+0

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal); WindowsIdentity identity = new WindowsIdentity(「192.168.1.201 \\ abc」,「12344」); WindowsImpersonationContext context = identity.Impersonate(); – emsk