【发布时间】:2020-10-10 15:18:53
【问题描述】:
我正在开发一个位于 web.com 托管的共享服务器上的 asp.net mvc Web 应用程序。它在 IIS 7 和 .NET 4.0 上运行。
当我的弹出表单加载带有目录名称的下拉列表时,我收到错误“[WebException: Unable to connect to the remote server] System.Net.FtpWebRequest.GetResponse()”在我的 ftp 站点中。我能够运行我的应用程序并连接到开发中的 ftp(使用 Visual Studio 2019)。而且我可以远程登录到 ftp(默认端口 21)。
控制器代码:
[NoCache]
[Authorize]
[HttpGet]
public ActionResult UploadFile()
{
ViewData["Folders"] = GetFolders();
return View();
}
private IEnumerable<SelectListItem> GetFolders()
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpUrl);
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.UseBinary = true;
request.KeepAlive = false;
request.Timeout = -1;
request.UsePassive = true;
request.Proxy = null;
request.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
List<SelectListItem> folders = new List<SelectListItem>();
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
string names = reader.ReadToEnd();
reader.Close();
response.Close();
var folderList =
new List<string>(names.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries)
.ToList());
folders = folderList.ConvertAll(a =>
{
return new SelectListItem()
{
Text = a.ToString(),
Value = a.ToString(),
Selected = false
};
});
return folders;
}
这是带有原始 ftpUrl 的 ftpwebrequest 日志:
System.Net Information: 0 : [11124] Current OS installation type is 'Server'.
System.Net Information: 0 : [27548]
FtpWebRequest#25592066::.ctor(ftp://ftp.mywebsite.com/ftp/)
System.Net Information: 0 : [27548]
FtpWebRequest#25592066::GetResponse(Method=NLST.)
System.Net Error: 0 : [27548] Exception in
FtpWebRequest#25592066::GetResponse - Unable to connect to the remote server.
at System.Net.FtpWebRequest.GetResponse()
这是我将 ftpUrl 更改为 root 时的 ftpwebrequest 日志:
System.Net Information: 0 : [11124] Current OS installation type is 'Server'.
System.Net Information: 0 : [20756]
FtpWebRequest#17494990::.ctor(ftp://ftp.mywebsite.com/)
System.Net Information: 0 : [20756]
FtpWebRequest#17494990::GetResponse(Method=NLST.)
System.Net Error: 0 : [20756] Exception in
FtpWebRequest#17494990::GetResponse - Unable to connect to the remote server.
at System.Net.FtpWebRequest.GetResponse()
这是我将 ftpUrl 更改为 IP 地址时的 ftpwebrequest 日志:
System.Net Information: 0 : [50288] Current OS installation type is 'Server'.
System.Net Information: 0 : [25964]
FtpWebRequest#40369685::.ctor(ftp://111.222.333.44/)
System.Net Information: 0 : [25964]
FtpWebRequest#40369685::GetResponse(Method=NLST.)
System.Net Error: 0 : [25964] Exception in
FtpWebRequest#40369685::GetResponse - Unable to connect to the remote server.
at System.Net.FtpWebRequest.GetResponse()
我是 C# 和 asp.net mvc 的新手,所以请多多包涵。任何帮助将不胜感激!
【问题讨论】:
-
当您的应用部署在生产环境中时,您是否从服务器运行 telnet?如果您能够从您的开发环境进行连接,这并不意味着您可以从生产环境中进行连接。
-
感谢您的回复!当我在客户端计算机上键入“telnet ftp.mywebsite.com 21”时,我得到“220 Microsoft FTP Service”。
-
我可以登录到“ftp ftp.mywebsite.com”并通过在命令行中输入“ftp> ls”来列出目录。我还可以使用网络浏览器连接和查看目录。 FileZilla 也可以。我将尝试在我的代码中处理日志文件,并让你知道我得到了什么。
-
您是否检查过您的代码在变量
ftpUrl中获得了预期的主机名 (ftp.mywebsite.com)?替代尝试使用 IP 地址。 -
@MartinPrikryl 这是日志:System.Net 信息:0:[30212] 当前操作系统安装类型为“服务器”。 System.Net 信息:0:[4960] FtpWebRequest#27524287::.ctor(ftp.mywebsite.com/ftp) System.Net 信息:0:[4960] FtpWebRequest#27524287::GetResponse(Method=NLST.) System.Net 信息:0 :[4960] RAS 支持:True System.Net 错误:0:[4960] FtpWebRequest#27524287::GetResponse 中的异常 - 无法连接到远程服务器。在 System.Net.FtpWebRequest.GetResponse()
标签: c# asp.net asp.net-mvc ftp ftpwebrequest