C# FtpWebRequest 错误 403

Pau*_*els 2 c# ftp ftpwebrequest

我有以下代码来通过 FTP 检索文件:

\n\n
        try\n        {\n            FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverPath);\n\n            request.KeepAlive = true;\n            request.UsePassive = true;\n            request.UseBinary = true;\n\n            request.Method = WebRequestMethods.Ftp.DownloadFile;\n            request.Credentials = new NetworkCredential(username, password);\n\n            using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())\n            using (Stream responseStream = response.GetResponseStream())\n            using (StreamReader reader = new StreamReader(responseStream))\n            using (StreamWriter destination = new StreamWriter(destinationFile))\n            {\n                destination.Write(reader.ReadToEnd());\n                destination.Flush();\n            }\n\n            return 0;\n        }\n        catch (Exception ex)\n        {\n            MessageBox.Show(ex.Message);\n        }\n
Run Code Online (Sandbox Code Playgroud)\n\n

这在大多数情况下都有效,但我有一台客户端计算机,但出现异常:

\n\n
The remote server returned an error 403: Forbidden\n
Run Code Online (Sandbox Code Playgroud)\n\n

谁能告诉我为什么会这样?它\xe2\x80\x99在所有客户端上运行的代码完全相同(包括相同的用户名和密码)?

\n

Att*_*ila 5

我遇到了同样的问题。

我已经做了一些监控。首先,我通过 TotalCommander 监控 FTP 连接的通信(它有效,所以它是一个很好的参考)。之后我也监控了我的程序。我对所发生的事情感到震惊。

不知何故,HTTP 请求是由 FTPRequest 实例发送的!我还没有解决这个问题,但我已经越来越接近了。如果我发现任何新情况,我会通知你。

解决方案对我来说非常简单。创建请求实例后,我刚刚添加了以下行:

request.Proxy = null;
Run Code Online (Sandbox Code Playgroud)