You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET与C#中使用FTP上传图片时遭遇550错误的问题排查及解决请求

ASP.NET与C#中使用FTP上传图片时遭遇550错误的问题排查及解决请求

我最近在ASP.NET项目里实现图片上传到FTP服务器的功能时遇到了麻烦,想请各位帮忙分析一下问题所在。

我的代码在执行到这一段时总是抛出550错误:

using (Stream requestStream = request.GetRequestStream()) 
{ 
    requestStream.Write(fileData, 0, fileData.Length); 
}

错误信息为:

System.Net.WebException: The remote server returned an error: (550) File unavailable (e.g., file not found, no access).

但我已经做了以下排查,这些点都没问题:

  • 确认自己拥有该FTP服务器的完整操作权限
  • 核对过FTP的用户名和密码完全正确
  • 用FileZilla客户端可以正常连接服务器,并且能顺利上传文件,只有代码实现时会报错

我是第一次在.NET里做FTP相关的集成,实在搞不懂为什么会出现这种客户端正常但代码不行的情况,希望能得到大家的指导,帮我找出错误原因和解决方法。

以下是我的完整代码:

protected void btnUpload_Click(object sender, EventArgs e)
{
    string uidvalue = Convert.ToString(HttpContext.Current.Session["uidvalue"]);
    if (uidvalue == null)
        uidvalue = "000";

    if (fileUploadImage.HasFile)
    {
        string fileName = Path.GetFileName(fileUploadImage.FileName);
        string fileExtension = Path.GetExtension(fileName).ToLower();
        int fileSize = fileUploadImage.PostedFile.ContentLength;

        // 验证文件类型
        if (fileExtension != ".jpg" && fileExtension != ".jpeg" && fileExtension != ".png")
        {
            lblMessage.ForeColor = System.Drawing.Color.Red;
            lblMessage.Text = "Only .jpg, .jpeg and .png files are allowed.";
            return;
        }

        // 验证文件大小 (<= 2MB)
        if (fileSize > 2 * 1024 * 1024)
        {
            lblMessage.Text = "File size must be 2MB or less.";
            return;
        }

        try
        {
            byte[] fileData = fileUploadImage.FileBytes;
            string ftpUrl = "ftp://abc.com/images_c/" + fileName;
            string ftpUsername = "imguser";
            string ftpPassword = "imguserQ123";

            FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpUrl);
            request.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
            request.Method = WebRequestMethods.Ftp.UploadFile;
            request.ContentLength = fileData.Length;
            request.UseBinary = true;
            request.UsePassive = false;
            request.EnableSsl = false;
            request.KeepAlive = false;

            // 错误发生在此处
            using (Stream requestStream = request.GetRequestStream())
            {
                requestStream.Write(fileData, 0, fileData.Length);
            }

            using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
            {
                lblMessage.ForeColor = System.Drawing.Color.Green;
                lblMessage.Text = "Upload successful: " + response.StatusDescription;
            }
        }
        catch (Exception ex)
        {
            lblMessage.Text = "Error: " + ex.Message;
        }
    }
    else
    {
        lblMessage.Text = "Please select a file.";
    }
}

想请教大家,针对这个550错误,我可以从哪些方面进行调试?或者有没有什么常见的配置或代码问题会导致这种情况?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 11:35:30