上传ftp服务器上的文件时出错

问题描述:

请帮帮我,我有一个很大的问题。上传ftp服务器上的文件时出错

我想上传一个使用asp.net c#的godaddy ftp服务器上的文件。当我在Visual Studio中运行应用程序时,该文件在ftp服务器上成功创建,但是当我使用诸如(www.domain/page.aspx)之类的URL创建此文件时,我得到以下错误(使用asp.net 4.0):

无法连接到远程服务器

当我使用asp.net 3.5我得到这个错误:

请求类型的权限“System.Net.WebPermission ,System,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'失败。

请帮帮我。

+0

我使用此代码上传文件//的FtpWebRequest FTPReq1 =(的FtpWebRequest)FtpWebRequest.Create( “ftp://domain.com/” + FileUpload1.FileName); //FTPReq1.UseBinary = true; //FTPReq1.Credentials = new NetworkCredential(“username”,“pass”); //FTPReq1.Method = WebRequestMethods.Ftp.UploadFile; // FtpWebResponse fres1 =(FtpWebResponse)FTPReq1.GetResponse(); –

确保您正在使用有权访问FTP的凭据。此外,您的网址可能类似ftp://www.domain.com/

以下是我过去使用的一些FTP代码。

public class FTP 
{ 
    private String Username { get; set; } 
    private String Password { get; set; } 
    private String Host { get; set; } 
    private Int32 Port { get; set; } 

    public FTP(String username, String password, String host, Int32 port) 
    { 
     Username = username; 
     Password = password; 
     Host = host; 
     Port = port; 
    } 

    private Uri BuildServerUri(string Path) 
    { 
     return new Uri(String.Format("ftp://{0}:{1}/{2}", Host, Port, Path)); 
    } 

    /// <summary> 
    /// Upload a byte[] to the FTP server 
    /// </summary> 
    /// <param name="path">Path on the FTP server (upload/myfile.txt)</param> 
    /// <param name="Data">A byte[] containing the data to upload</param> 
    /// <returns>The server response in a byte[]</returns> 
    private byte[] UploadData(string path, byte[] Data) 
    { 
     // Get the object used to communicate with the server. 
     WebClient request = new WebClient(); 

     try 
     { 
      // Logon to the server using username + password 
      request.Credentials = new NetworkCredential(Username, Password); 
      return request.UploadData(BuildServerUri(path), Data); 
     } 
     finally 
     { 
      if (request != null) 
       request.Dispose(); 
     } 
    } 

    /// <summary> 
    /// Load a file from disk and upload it to the FTP server 
    /// </summary> 
    /// <param name="ftppath">Path on the FTP server (/upload/myfile.txt)</param> 
    /// <param name="srcfile">File on the local harddisk to upload</param> 
    /// <returns>The server response in a byte[]</returns> 
    public byte[] UploadFile(string ftppath, string srcfile) 
    { 
     // Read the data from disk 
     FileStream fs = new FileStream(srcfile, FileMode.Open); 
     try 
     { 
      byte[] FileData = new byte[fs.Length]; 

      int numBytesToRead = (int)fs.Length; 
      int numBytesRead = 0; 
      while (numBytesToRead > 0) 
      { 
       // Read may return anything from 0 to numBytesToRead. 
       int n = fs.Read(FileData, numBytesRead, numBytesToRead); 

       // Break when the end of the file is reached. 
       if (n == 0) break; 

       numBytesRead += n; 
       numBytesToRead -= n; 
      } 

      numBytesToRead = FileData.Length; 

      // Upload the data from the buffer 
      return UploadData(ftppath, FileData); 
     } 
     finally 
     { 
      if (fs != null) 
       fs.Close(); 
      if (fs != null) 
       fs.Dispose(); 
     } 
    } 
} 
+0

感谢您的帮助,但我得到了同样的错误(无法连接到远程服务器) –

+0

您能通过命令行连接并传输文件吗? http://kb2.adobe.com/cps/164/tn_16418.html – Mark

+0

我知道命令行,但我的项目需要使用从url请求的asp.net创建文件和文件夹,感谢您的帮助。 –