C#开发ftp客户端遇到550错误

在C#开发FTP客户端时遇到550错误,即远程服务器返回'文件不可用'的异常。经过调试,确定连接和认证环节无误,问题出在尝试写入文件到服务器时的权限不足。解决方案是调整Windows 2003 IIS服务器的FTP站点设置,赋予主目录写入权限,从而成功避免错误。

C#开发ftp客户端遇到550错误

最近使用c#开发一个简易的ftp客户端,在测试上传功能的时候发现抛出一个错误,【远程服务器返回错误:(550) 文件不可用(例如,未找到文件,无法访问文件)】。
然后我就通过vs调试的工具跟了一下,发现出现异常的地方在下面的代码段那

Stream strm = reqFTP.GetRequestStream();
contentLen = fs.Read(buff, 0, buffLength);

我们可以知道前面的什么验证用户名,密码都是没有错误的,同时Connect函数也顺利通过了,所以我感觉我是连接上服务器了。那么出现错误的这行代码是什么意思呢,这个函数的意思是新建了一个流对象strm,然后读buff里面的数据写到这个流对象里面,这个时候就报错了,肯定是读的时候出错了,脑子里第一反应就是权限问题,也就是说本地无法写文件到服务器里去。

解决办法
显然是服务器那边的问题,这里测试使用的是Windows 2003搭建的一个ftp服务器,由于服务器搭建的默认权限是只有读取,所以我们需要把这里修改一下。
首先进入管理工具中的Internet信息服务(IIS)管理器
这里写图片描述

选择ftp站点的属性
这里写图片描述

选择主目录,把写入的权限给勾选
这里写图片描述

这样设置好了,再使用上传功能就不会报以前的错误了。

最后贴上ftp客户端类的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.IO;
using System.Windows.Forms;

namespace Ftp
{
    class FtpClient
    {
        string ftpSrvIP;
        public string FtpSrvIP
        {
            get { return ftpSrvIP; }
            set { ftpSrvIP = value; }
        }
        string ftpUserID;
        public string FtpUserID
        {
            get { return ftpUserID; }
            set { ftpUserID = value; }
        }
        string ftpPasswd;
        public string FtpPasswd
        {
            get { return ftpPasswd; }
            set { ftpPasswd = value; }
        }
        FtpWebRequest reqFTP;
        private void Connect(String path)//连接ftp  
        {
            // 根据uri创建FtpWebRequest对象  
            reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(path));
            // 指定数据传输类型  
            reqFTP.UseBinary = true;
            // ftp用户名和密码  
            reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPasswd);
        }  

        private string[] GetFileList(string
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值