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

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(
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ABSTRACT: C是一种高级、通用的编程语言,由美国贝尔实验室的丹尼斯·里奇(Dennis Ritchie)在1972年所开发出来。它是为了重新实现操作系统UNIX时而诞生的。C是一种面向过程的编程语言,它提供了许多用于编写程序的基本功能和高级特性。由于其效率高、灵活性强和可移植性好的特点,C很快成为了最受欢迎的编程语言之一。 C的语法相对简单,容易学习和掌握。它的语法结构非常清晰,一条条语句按照顺序执行,使得程序的逻辑性非常强。C还提供了丰富的库函数,使得编写程序更加方便和高效。C的代码可读性强,结构清晰,易于维护和调试。 C在操作系统、嵌入式系统、游戏开发、网络编程等领域有着广泛的应用。许多著名的软件和操作系统都是C语言开发的,比如UNIX、Windows和Linux。C在硬件开发中也得到了广泛使用,它可以直接访问底层硬件,调用设备驱动程序,提供更高的性能和灵活性。C语言还可以与其他编程语言相结合,实现更复杂的功能。 由于C语言的流行度和广泛应用,许多编程人员都将其作为必备的技能。掌握C语言能够在编程领域获得更多的机会和竞争优势。C语言的学习也为进一步学习其他编程语言打下了坚实的基础。 总之,C语言是一种高效、灵活、可移植和广泛应用的编程语言。掌握C语言不仅可以帮助开发者解决各种编程问题,还可以提高程序的效率和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值