C# 将文件上载到FTP

C# 将文件上载到FTP,c#,ftp,ftpwebrequest,C#,Ftp,Ftpwebrequest,我从C#上传文件到FTP服务器时遇到一些问题。我的代码在本地主机上运行良好,但在实时环境中,它一直给我一个操作超时。异常 我使用以下代码: FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpPath + "/orders.csv"); request.UsePassive = true; request.Credentials = new NetworkCredential(ftpUsername, ftpPassword);

我从C#上传文件到FTP服务器时遇到一些问题。我的代码在本地主机上运行良好,但在实时环境中,它一直给我一个
操作超时。
异常

我使用以下代码:

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpPath + "/orders.csv");
request.UsePassive = true;
request.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Timeout = -1;
StreamReader sourceStream = new StreamReader(context.Server.MapPath("~/App_Data/orders.csv"));
byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
request.ContentLength = fileContents.Length;

Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();
其中
ftpPath
是我的FTP服务器的URL:

有人知道我做错了什么吗?:-)


提前感谢。

这是一个权限问题。我的webhotel上的FTP用户似乎受到了限制(不知何故)使用另一个具有完全权限的用户尝试FTP,并且成功了。

有时我们需要从FTP服务器下载、上载文件。下面是一些FTP操作的示例。 为此,我们需要包含一个名称空间,它是。使用System.Net

public void DownloadFile(string HostURL, string UserName, string Password, string SourceDirectory, string FileName, string LocalDirectory)
        {
            if (!File.Exists(LocalDirectory + FileName))
            {
                try
                {
                    FtpWebRequest requestFileDownload = (FtpWebRequest)WebRequest.Create(HostURL + "/" + SourceDirectory + "/" + FileName);
                    requestFileDownload.Credentials = new NetworkCredential(UserName, Password);
                    requestFileDownload.Method = WebRequestMethods.Ftp.DownloadFile;
                    FtpWebResponse responseFileDownload = (FtpWebResponse)requestFileDownload.GetResponse();
                    Stream responseStream = responseFileDownload.GetResponseStream();
                    FileStream writeStream = new FileStream(LocalDirectory + FileName, FileMode.Create);
                    int Length = 2048;
                    Byte[] buffer = new Byte[Length];
                    int bytesRead = responseStream.Read(buffer, 0, Length);
                    while (bytesRead > 0)
                    {
                        writeStream.Write(buffer, 0, bytesRead);
                        bytesRead = responseStream.Read(buffer, 0, Length);
                    }
                    responseStream.Close();
                    writeStream.Close();
                    requestFileDownload = null;
                    responseFileDownload = null;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }

我不清楚您是否正在托管自己的服务器,但如果是,您使用的是什么FTP服务器?如果不是,您的代码“在本地主机上运行良好”是什么意思?嗨,Kirk,FTP服务器可以是用户指定的任何服务器:-)在我的测试用例中,我使用远程FTP(我的webhotel)进行测试。当我在本地运行ASP.net站点时,它可以正常工作,但当我将其上载到(联机)登台环境时,它会给我超时时间。那么,您的请求“在本地主机上运行良好”是什么意思?您是否正在尝试本地安装的FTP服务器,并将其与某个远程站点上安装的FTP服务器进行比较?更新了上面的我的评论;-)如果删除“request.Timeout=-1;”,会发生什么?