C# 使用webclient类将文件上载到文件服务器

C# 使用webclient类将文件上载到文件服务器,c#,file-upload,webclient,fileserver,C#,File Upload,Webclient,Fileserver,目前,我有一个应用程序从我的web应用程序接收上传的文件。现在,我需要将该文件传输到恰好位于同一网络上的文件服务器(但情况可能并非总是如此) 我试图使用C#NET中的webclient类 位于192.168.1.28的计算机是一个文件服务器,具有共享c:\Files。 现在我收到一个登录失败的错误,用户名或密码不正确,但我可以打开资源管理器并成功输入登录路径。我也可以使用远程桌面登录,因此我知道用户帐户可以正常工作 对这个错误有什么看法吗? 可以像那样直接传输文件吗?使用webclient类或其

目前,我有一个应用程序从我的web应用程序接收上传的文件。现在,我需要将该文件传输到恰好位于同一网络上的文件服务器(但情况可能并非总是如此)

我试图使用C#NET中的webclient类

位于192.168.1.28的计算机是一个文件服务器,具有共享c:\Files。 现在我收到一个登录失败的错误,用户名或密码不正确,但我可以打开资源管理器并成功输入登录路径。我也可以使用远程桌面登录,因此我知道用户帐户可以正常工作

对这个错误有什么看法吗? 可以像那样直接传输文件吗?使用webclient类或其他类?

只需使用

File.Copy(filepath, "\\\\192.168.1.28\\Files");
通过UNC路径公开的windows文件共享被视为文件系统的一部分,与web无关

使用的凭据将是ASP.NET工作进程的凭据,或您启用的任何模拟。如果你能调整这些使其正确,这是可以做到的

您可能会遇到问题,因为您使用的是IP地址而不是服务器名(windows信任设置阻止您离开域-使用IP隐藏任何域详细信息)如果可能,请使用服务器名称

如果这不在同一个windows域上,并且您尝试使用不同的域帐户,则需要将用户名指定为“[domain\u或\u machine]\[username]”


如果需要指定显式凭据,则需要查看。

当您手动打开IP地址(通过运行命令或映射网络驱动器)时,您的电脑将通过管道发送凭据,文件服务器将收到DC的授权


当ASP.Net尝试时,它将尝试使用IIS工作用户(除非启用模拟,这将列出一些其他问题)。传统上,IIS worker用户没有跨服务器(甚至在web服务器上的其他文件夹中)工作的权限。

可能由于权限的原因,它无法工作。只有在拥有所需权限的用户下运行网站时,他才能使用System.IO.File.Copy。默认情况下,web应用程序在本地有限用户下运行,以避免安全问题。添加了一些权限详细信息。同意-权限可能会变得棘手。@SoftwareEdi是否可以将文件传输到文件服务器,而无需存储在最初从网页上载文件的服务器上?该帐户是域帐户还是计算机帐户?该帐户是计算机上的用户。问题是,我们正在转向一种新的体系结构,我们有两个文件服务器,通过虚拟ip进行集群和负载平衡。所以我需要能够将文件发送到VIP。我知道如果我发布到页面,使用web客户端是可行的。但我想避免这种情况,直接传输文件。有办法吗?
File.Copy(filepath, "\\\\192.168.1.28\\Files");
namespace FileUpload
{
public partial class Form1 : Form
{
    string fileName = "";
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {

        string path = "";
        OpenFileDialog fDialog = new OpenFileDialog();
        fDialog.Title = "Attach customer proposal document";
        fDialog.Filter = "Doc Files|*.doc|Docx File|*.docx|PDF doc|*.pdf";
        fDialog.InitialDirectory = @"C:\";
        if (fDialog.ShowDialog() == DialogResult.OK)
        {
            fileName = System.IO.Path.GetFileName(fDialog.FileName);
            path = Path.GetDirectoryName(fDialog.FileName);
            textBox1.Text = path + "\\" + fileName;

        }
    }

    private void button2_Click(object sender, EventArgs e)
    {
        try
        {
            WebClient client = new WebClient();

            NetworkCredential nc = new NetworkCredential("erandika1986", "123");

            Uri addy = new Uri(@"\\192.168.2.4\UploadDocs\"+fileName);

            client.Credentials = nc;
            byte[] arrReturn = client.UploadFile(addy, textBox1.Text);
            MessageBox.Show(arrReturn.ToString());

        }
        catch (Exception ex1)
        {
            MessageBox.Show(ex1.Message);
        }
    }
}
}