- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
请先看我的窗体代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace my_prog
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string ftp_username = "goodzilla_user";
string ftp_password = "goodzilla_pass";
string ftp_remote_host = @"ftp://11.11.111.11";
private void Form1_Load(object sender, EventArgs e)
{
UploadFile("d:\\test.txt", ftp_remote_host + @"/test.txt", ftp_username, ftp_password);
}
#region UploadFile Method
/// <summary>
/// Methods to upload file to FTP Server
/// </summary>
/// <param name="_FileName">local source file name</param>
/// <param name="_UploadPath">Upload FTP path including Host name</param>
/// <param name="_FTPUser">FTP login username</param>
/// <param name="_FTPPass">FTP login password</param>
///
public void UploadFile(string _FileName, string _UploadPath, string _FTPUser, string _FTPPass)
{
System.IO.FileInfo _FileInfo = new System.IO.FileInfo(_FileName);
// Create FtpWebRequest object from the Uri provided
System.Net.FtpWebRequest _FtpWebRequest = (System.Net.FtpWebRequest)System.Net.FtpWebRequest.Create(new Uri(_UploadPath));
// Provide the WebPermission Credintials
_FtpWebRequest.Credentials = new System.Net.NetworkCredential(_FTPUser, _FTPPass);
// By default KeepAlive is true, where the control connection is not closed
// after a command is executed.
_FtpWebRequest.KeepAlive = false;
// set timeout for 20 seconds
_FtpWebRequest.Timeout = 20000;
// Specify the command to be executed.
_FtpWebRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile;
// Specify the data transfer type.
_FtpWebRequest.UseBinary = true;
// Notify the server about the size of the uploaded file
_FtpWebRequest.ContentLength = _FileInfo.Length;
// The buffer size is set to 2kb
int buffLength = 2048;
byte[] buff = new byte[buffLength];
// Opens a file stream (System.IO.FileStream) to read the file to be uploaded
System.IO.FileStream _FileStream = _FileInfo.OpenRead();
try
{
// Stream to which the file to be upload is written
System.IO.Stream _Stream = _FtpWebRequest.GetRequestStream();
// Read from the file stream 2kb at a time
int contentLen = _FileStream.Read(buff, 0, buffLength);
// Till Stream content ends
while (contentLen != 0)
{
// Write Content from the file stream to the FTP Upload Stream
_Stream.Write(buff, 0, contentLen);
contentLen = _FileStream.Read(buff, 0, buffLength);
}
// Close the file stream and the Request Stream
_Stream.Close();
_Stream.Dispose();
_FileStream.Close();
_FileStream.Dispose();
MessageBox.Show("Done");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Upload Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
#endregion
}
}
我正在使用 UploadFile 方法将我的数据上传到我的 windows server 2008 r2 服务器。
.net 4 中的这些代码工作完美,我的问题是关于 .net 3.5 的。
在 .net 3.5 我得到这个错误:
"The server returned an address in response to the PASV command that is different than the address to which the FTP connection was made."
出于以下原因我不想使用主动模式
:
如您所知,被动模式优于主动模式连通性...
当我在 .net 3.5 中使用事件模式并且打开代理软件我得到以下错误:
"The underlying connection was closed: The server committed a protocol violation."
但是 .net 4 对那个代理软件 和被动模式没问题,我不能切换到 .net 4 因为我用户...
那么如何修复 .net 3.5 中的被动模式错误?
在堆栈中的每个线程中,人们都说只使用:
_FtpWebRequest.UsePassive = false;
这不是我的答案!
注意:服务器和客户端的防火墙都关闭
是否可以通过代码定义psessive mode的port-range?
我在这个线程中问了这个问题,因为我认为通过这样做我们可以修复 PASV 错误并帮助 passive-mode 更快地完成它的工作...
提前致谢
最佳答案
这是你的答案:
似乎问题与 .net 3.5 无关 和 .net 4
你可以在服务器内部解决这个问题,如下所示
configuring-ftp-firewall-settings-in-iis-7
对于代理软件错误:更改端口范围。
对于被动错误:将防火墙的外部 IP 地址更改为您的公共(public) IP 地址。
编辑:
真的很感激其他人了解我们是否可以在代码隐藏中定义端口范围?
关于c# - 如何在 FtpWebRequest 中使用被动模式并修复 .Net 3.5 中的 PASV 错误并通过代码定义端口范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21032577/
我决定在C#中滚动我自己的FTP套接字客户端,以便获得更多控制权,但主要是为了学习经验。但是我无法确定发出RETR命令后需要读取多少文件数据。我能够建立初始的FTP通信连接,然后通过发出PASV命令和
我正在编写一个 FTP 服务器,但我不理解 PASV 命令,任何服务器都会发送这样的响应: 227 Entering Passive Mode (213,229,112,130,216,4) 括号里的
尽量简短 我使用 c# .net 3.5 编写了自定义 FTP 实现。系统使用 TcpClient(主动模式下的 TcpListener)来管理连接。在单个实例中出现奇怪的行为,我想询问可能的原因。
有没有人成功地使用 .Net FTPWebRequest 类从 NAT 后面 ftps 到远程服务器?我的代码如下: Dim URI = "ftp://" & sRemoteDir & "/"
System.Net.WebException: The server returned an address in response to the PASV command that is diff
在我的 TCP 服务器上,我希望有: 非阻塞被动套接字具有非阻塞accept(); 接受连接后,我想执行一些身份验证,例如验证客户端提供的 ID 和密码。所以我有明确定义的协议(protocol),我
我已经在 Ubuntu 12.04 LTS 中设置了 FTP 服务器。 现在,当我尝试通过命令行 ftp.exe 从 Windows 7 连接到 FTP 服务器时,我已成功连接,但无法获取目录列表。我
当我使用 PHP 的 cURL 扩展(使用 curl_setopt 命令)时,我找不到像 --ftp-skip-pasv-ip 这样的选项。 --ftp-skip-pasv-ip 在 PHP cURL
我在 AWS EC2 (Ubuntu16.04) 上使用被动模式 (PASV) 设置了 FTP 服务器,但它不起作用。但是,它可以与 EPSV 一起使用,不知道为什么。我四处搜寻但没有找到答案,有人可
请先看我的窗体代码: using System; using System.Collections.Generic; using System.Comp
我正在尝试编写 FTP 客户端程序,但似乎无法连接到被动端口。我想最终列出目录并下载文件,但我也不知道该怎么做。 这是我的程序打印出来的内容。 PASV 227 Entering Passive Mo
我使用 .NET 4.0 创建了一个自定义 FTP 服务器。我在同一台 Windows 7 机器上同时运行客户端和服务器,并且我的防火墙完全被禁用。我可以使用 FileZilla 和 FtpUse 连
我是一名优秀的程序员,十分优秀!