0

これは、A: 192.168.1.200 と B: 192.168.1.201 の 2 台の PC を持つ Web アプリケーションです。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;
    }
}
4

3 に答える 3

0

試してみてください:

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

また、Source1 フォルダーが B で共有されていること、およびそのフォルダーへの書き込みアクセス権があることも確認する必要があります。

于 2012-06-04T15:16:28.350 に答える
0

受信側マシンに Windows 共有「Source1」を作成しましたか? もしそうなら、あなたの送信機にマウントして、コードを次のように変更します。

CopyFiles(a, a.Replace("D:\\Source\\", "\\\\192.168.1.201\\Source1\\New\\"));
于 2012-06-04T15:19:52.057 に答える
0

ターゲット マシンへの書き込みが許可されている必要があります。ここで回避策を使用できます。たとえば、Z: などのネットワーク プレースを指す仮想ドライブを作成できます。ローカル表記を使用できるようになりました。ただし、何よりもまず、リモート PC のアクセス許可を確認してください。

于 2012-06-04T15:22:25.303 に答える