【问题标题】:Unable to connect to server when uploading file using FTP使用 FTP 上传文件时无法连接到服务器
【发布时间】:2017-05-21 23:41:29
【问题描述】:

我正在使用 mvc 4.5 尝试使用 FTP 上传图像。

我的代码:

public virtual void Send(HttpPostedFileBase uploadfile, string fileName)
{
    Stream streamObj = uploadfile.InputStream;
    byte[] buffer = new byte[uploadfile.ContentLength];
    streamObj.Read(buffer, 0, buffer.Length);
    streamObj.Close();

    string ftpurl = String.Format("{0}/{1}/{2}", _remoteHost, _foldersHost, fileName);
    var request = FtpWebRequest.Create(ftpurl) as FtpWebRequest;

    request.Method = WebRequestMethods.Ftp.UploadFile;
    request.UsePassive = false;
    request.Credentials = new NetworkCredential(_remoteUser, _remotePass);
    request.ContentLength = buffer.Length;

    var requestStream = request.GetRequestStream();
    requestStream.Write(buffer, 0, buffer.Length);
    requestStream.Close();

    var response = (FtpWebResponse) request.GetResponse();

    if (response != null)
        response.Close();
}

代码在本地主机上运行,​​我能够连接到 FTP 服务器并上传文件,但是一旦项目发布,问题就出现了。我正在使用 SmarterASP 来托管该站点。当我尝试在生产中上传图像时,上传方法给了我一个异常,消息说“无法连接到远程服务器”。

任何线索或解决方法?

异常详情:

System.Net.FtpWebRequest.GetRequestStream() at AgileResto.Controllers.RestaurantsController.Send(HttpPosted‌​FileBase uploadfile, String fileName) at AgileResto.Controllers.RestaurantsController.UploadFile(Int3‌​2 RestaurantList, HttpPostedFileBase file, HttpPostedFileBase文件2)

【问题讨论】:

  • 您是否检查了防火墙端口,并且您实际上可以从生产服务器连接到 FTP 站点?作为一项基本测试,尝试在您选择的浏览器中浏览到 ftp:// 以查看连接是否成功。如果没有,在修复任何代码之前,您需要担心连接/配置问题。
  • 你有什么理由去激活模式(UsePassive = false)?它几乎无法工作。使用被动模式。
  • 如果您需要更多帮助,请先发布确切的异常消息、完整的堆栈跟踪和FtpWebRequest log file
  • @pcdev 我正在使用 SmarterASP 来托管该站点,恐怕我无法访问防火墙配置。从我的电脑上,当我尝试浏览 ftp 时,除了错误页面之外什么都无法访问://。但奇怪的是,我能够从运行在 localhost 的站点访问 FTP 服务器,不是吗?
  • @MartinPrikryl,我将其更改为被动模式,但错误仍然存​​在......我尝试创建日志文件,但我找不到它。你知道我在哪里可以找到它吗?完全例外:Unable to connect to the remote server at System.Net.FtpWebRequest.GetRequestStream() at AgileResto.Controllers.RestaurantsController.Send(HttpPostedFileBase uploadfile, String fileName) at AgileResto.Controllers.RestaurantsController.UploadFile(Int32 RestaurantList , HttpPostedFileBase 文件, HttpPostedFileBase 文件2)

标签: c# asp.net-mvc ftp


【解决方案1】:

您需要将服务器中的write 权限授予您将文件保存到的文件夹

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    • 1970-01-01
    相关资源
    最近更新 更多