ftp上传本机调试出错:基础连接已经关闭: 连接被意外关闭。哪位大侠指点一下吧,实在是找不到错在哪了

joyceysl_123 2016-06-27 05:09:01
private FtpWebRequest GetRequest(string url)
{
FtpWebRequest ftpRequest;
try
{
ftpRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + url));
ftpRequest.Credentials = new NetworkCredential(userName, passWord);
ftpRequest.UseBinary = true;
ftpRequest.KeepAlive = true;
}
catch (Exception e)
{
throw e;
}
return ftpRequest;
}
以上没捕捉到错,错在下面
/// <summary>
/// 列出FTP服务器上面当前目录的所有文件和目录
/// </summary>
public FileStruct[] ListFilesAndDirectories(string remoteFatherDirctory)
{

try
{
FtpWebRequest request = GetRequest(remoteFatherDirctory);
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
StreamReader stream = new StreamReader( response.GetResponseStream(), Encoding.Default);
string Datastring = stream.ReadToEnd();
FileStruct[] list = GetList(Datastring);
return list;
}
catch(WebException ep)
{
ErrorMsg = ep.ToString();
throw ep;
}
}

response 返回的是null,request请求一大堆错误如下节选
ClientCertificates = {System.Security.Cryptography.X509Certificates.X509CertificateCollection}
ConnectionGroupName = null
ContentLength = 0
ContentType = “request.ContentType”引发了“System.NotSupportedException”类型的异常
EnableSsl = false
Headers = {Host: 172.*****:8121
Proxy-Connection: Keep-Alive
Method = "LIST"
PreAuthenticate = “request.PreAuthenticate”引发了“System.NotSupportedException”类型的异常
Proxy = {System.Net.WebRequest.WebProxyWrapper}
ReadWriteTimeout = 300000
Timeout = 100000
UseDefaultCredentials = “request.UseDefaultCredentials”引发了“System.NotSupportedException”类型的异常

}
KeepAlive = true
...全文
417 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tcmakebest 2016-06-28
  • 打赏
  • 举报
回复
试试这段代码仅供参考
/// <summary>
/// 列出FTP服务器上面当前目录的所有文件和目录
/// ListFilesAndDirectories("shop");
/// </summary>
public string ListFilesAndDirectories(string remoteFatherDirctory)
{

    try
    {
        FtpWebRequest request = GetRequest("ftp://127.0.0.1/" + remoteFatherDirctory, "username", "password");
        request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
        FtpWebResponse response = (FtpWebResponse)request.GetResponse();
        StreamReader stream = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
        string Datastring = stream.ReadToEnd();
        return Datastring;
    }
    catch (WebException ep)
    {
        throw ep;
    }
}

private FtpWebRequest GetRequest(string url, string uid, string pwd)
{
    FtpWebRequest ftpRequest;
    try
    {
        ftpRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));
        ftpRequest.Credentials = new NetworkCredential(uid, pwd);
        ftpRequest.UseBinary = true;
        ftpRequest.KeepAlive = true;
    }
    catch (Exception e)
    {
        throw e;
    }
    return ftpRequest;
}
joyceysl_123 2016-06-28
  • 打赏
  • 举报
回复
这个代码之前都是好好的,不知为什么我改动了下又恢复原形就不行了,还有个特别奇怪的是为什么IIS发布过后就可以了呢?
joyceysl_123 2016-06-28
  • 打赏
  • 举报
回复
各位朋友们,我的问题已经解决了,是调试的时候模拟器的问题,我用IIS模拟就好了
joyceysl_123 2016-06-28
  • 打赏
  • 举报
回复
再顶一下,关键是为什么在本机放到IIS上就可以啊
  • 打赏
  • 举报
回复
没有特别的理由,设计自己的系统,不要使用 ftp。
  • 打赏
  • 举报
回复
ftp 服务通常又慢又不稳定。你的客户端程序应该多重试几次。
shoppo0505 2016-06-27
  • 打赏
  • 举报
回复
这两个函数有什么关联么?没看出来. 其中的FtpWebRequest 是同一个对象么?

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧