如何使用C#将文件从服务器传输到同一域上的另一个文件

时间:2017-02-01 11:55:09

标签: c# file-upload server

我尝试了多种不同的方法将文件从服务器传输到同一域上的另一台不同的服务器。 无论我尝试什么,我都会不断收到错误的用户名或密码错误,但是当我尝试从服务器手动访问“\ serverIP \ c $”文件夹时,我可以使用正确的用户名和密码正确访问该文件夹。 / p>

我的代码的第一部分将文件从本地pc放置到托管应用程序的服务器上,这非常有效:

                string path = Path.Combine(Server.MapPath("~/ACAD_Drawings"),
                                           Path.GetFileName(file.FileName));
                file.SaveAs(path);

然而,我需要将此文件从此服务器移动到将使用该文件的其他服务器上,并且使用以下代码执行上一次尝试:

                NetworkCredential myCred = new NetworkCredential("Username", "Password", "DomainName");
                WebClient webclient = new WebClient();
                webclient.Credentials = myCred;
                string tempFileForStorage = path;
                file.SaveAs(tempFileForStorage);
                webclient.UploadFile("\\\\NewServerIP\\c$", "PUT", tempFileForStorage);
                webclient.Dispose();
                System.IO.File.Delete(tempFileForStorage);

使用此代码,当我确定它们是正确的时,我会不断收到错误的用户名和密码。有人知道我做错了什么或错过任何步骤吗?

1 个答案:

答案 0 :(得分:0)

您的任务第一:您需要了解SMB / CIFS协议。请参阅:https://en.wikipedia.org/wiki/Server_Message_Block,如何连接(@Steve Drake):Connect to network drive with user name and password

当您使用SMB在另一台计算机上连接时,您可以使用普通IO本地计算机来读取/写入远程文件。

如果两个服务器不在同一个局域网中,使用其他方式传输文件会更好,如socketWebAPI等。