10

誰かが以下のコードを見て、私が間違っていることを教えてください。私はちょうど円を描いています、、、どんなポインタでも大歓迎です

public class FtpWebRequestUtil
{
    private static string RemoteHost;
    private static string RemoteFtpPath;
    public static NetworkCredential Credential = new NetworkCredential();

    public FtpWebRequestUtil()
    {
    }

    public FtpWebRequestUtil(string RemoteAddress, string RemotePath, string RemoteUser, string RemotePwd)
    {
        Credential.UserName = RemoteUser;
        Credential.Password = RemotePwd;
        RemoteHost = RemoteAddress;
        RemoteFtpPath = RemotePath;
    } 

    public string UploadFile(string localFilePath)
    {
        int startTime = Environment.TickCount;
       // Console.WriteLine("Uploading File " + localFilePath);
        try
        {
            FileInfo localFile = new FileInfo(localFilePath); //e.g.: c:\\Test.txt
            byte[] buf = new byte[2048];
            int iWork;
            string remoteFile = "ftp://" + RemoteHost + "/" + RemoteFtpPath + "/" + localFile.Name;

            FtpWebRequest req = (FtpWebRequest) FtpWebRequest.Create(remoteFile);
           // req.Proxy = 

            req.Credentials = Credential;


           // FtpWebRequest req = (FtpWe

            req.UseBinary = true;
            req.KeepAlive = true;
            req.Method = WebRequestMethods.Ftp.UploadFile;
            StreamWriter myStreamWriter = new StreamWriter(req.GetRequestStream());
            myStreamWriter.Write(new StreamReader("TestFiles\\" + localFile.Name).ReadToEnd());
            myStreamWriter.Close();
            FtpWebResponse myFtpWebResponse = (FtpWebResponse) req.GetResponse();
            Console.WriteLine("Upload File Complete, status: " + myFtpWebResponse.StatusDescription);

            myFtpWebResponse.Close();
            return "SUCCESS";
        }
        catch (Exception ex)
        {
            Console.WriteLine("There was an error connecting to the FTP Server.");
            Console.WriteLine(ex.Message);
            throw ex;
        }
        Console.WriteLine("Time taken for downloading file is " + (Environment.TickCount - startTime).ToString());
        return "FAILURE";
    }


    ************************                       *********************************
    FtpWebRequestUtil ftpClient = new FtpWebRequestUtil(FtpUrl, InputFolder, FtpUser, FtpPassword);
    try
    {
        Thread.Sleep(5000);
        ftpClient.UploadFile(UploadingFileName);
                }
        catch (Exception exception)
        {
            Assert.Fail(exception.Message);
        }
        finally
        {
            ftpClient = null;
        }
    }
}
4

3 に答える 3

14
req.Proxy = new WebProxy(); // initialize this FtpWebRequest property
于 2013-10-21T15:59:30.397 に答える
7

RETRLIST、およびメソッドのみがプロキシが構成されている場合にNLSTサポートされていることが判明し、コードでプロキシを設定していなくても問題ありません:プロキシ (プロキシではない) がシステムのプロキシ設定で構成されている場合 (例: Internet Options\Connections\LAN setting\Proxy Server\ Use a proxy server for your LAN)、サーバーにアップロードしようとすると、このエラーが発生します。System.Net.FtpWebRequestHTTPHTTPFTPFTP

回避策は、IE を使用してシステム設定を変更し、HTTPプロキシの使用をオフにすることです。ただし、影響を受けるコードにアクセスできる場合の解決策はProxy、リクエストのプロパティを null に設定することです。次に例を示します。

request.Proxy = null;
于 2015-03-14T07:37:49.150 に答える
0

例外自体が答えです - それはサポートされていません。おそらく、FTP への直接接続を妨げている HTTP プロキシを使用している可能性があります。MS のドキュメントによると、指定されたプロキシが HTTP プロキシの場合、DownloadFile、ListDirectory、および ListDirectoryDe​​tails コマンドのみがサポートされているため、UploadFile はサポートされていません。

于 2013-12-04T17:38:04.247 に答える