最近用 FileSystem 和 FtpWebRequest 做一个多台服务器的同步程序,在使用FtpWebRequest进行上传的时候,出现一些问题,当上传文件夹的时候,文件夹结构如下:
A/A1/F1;F2;F3;F4;(A2/F5;F6);F7
A/A2/……创建文件夹的时候是同步操作,上传文件的时候是异步操作,就造成当我开始上传最后一个文件F7之后,切换回目录A/的时候出错,提示“远程服务器返回错误: (550) 文件不可用(例如,未找到文件,无法访问文件)。”
程序死掉,然后我用 try{} catch{} 进行无限的重试,结果总能操作成功;觉得有点不可思议,因为我上传文件的时候是 FtpRequest.Create 的一个新的对象,应该不会影响到创建文件夹的操作,就好像是在两台
不同的电脑上一个在进行上传,一个在进行创建文件夹一样。于是我开始怀疑我创建的这个新对象和我之前创建的对象用的是同一个网络连接,然后我打开CUTEFTP进行验证,发现在上传文件的时候,跟本不允许进行文件夹
切换操作,于是我在 FtpRequest.Create 新对象之后,马上打印了一下 FtpRequest.ServicePoint.GetHashCode() 发现不管我 create 多少个对象,这个 hashCode 总是同一个值!这下搞清楚了,为什么在上传文件的过程中进行目录切换操作报错的问题了,这和我编程之前想的一点儿都不一致,我希望至少要创建两个连接,一个用来进行同步FTP操作,一个进行异步FTP操作,在这里我想问一下,怎么样才能在 FtpRequest.Create 一个新的 FtpRequest 对象的时候自动使用不同的 ServicePoint ??
A/A1/F1;F2;F3;F4;(A2/F5;F6);F7
A/A2/……创建文件夹的时候是同步操作,上传文件的时候是异步操作,就造成当我开始上传最后一个文件F7之后,切换回目录A/的时候出错,提示“远程服务器返回错误: (550) 文件不可用(例如,未找到文件,无法访问文件)。”
程序死掉,然后我用 try{} catch{} 进行无限的重试,结果总能操作成功;觉得有点不可思议,因为我上传文件的时候是 FtpRequest.Create 的一个新的对象,应该不会影响到创建文件夹的操作,就好像是在两台
不同的电脑上一个在进行上传,一个在进行创建文件夹一样。于是我开始怀疑我创建的这个新对象和我之前创建的对象用的是同一个网络连接,然后我打开CUTEFTP进行验证,发现在上传文件的时候,跟本不允许进行文件夹
切换操作,于是我在 FtpRequest.Create 新对象之后,马上打印了一下 FtpRequest.ServicePoint.GetHashCode() 发现不管我 create 多少个对象,这个 hashCode 总是同一个值!这下搞清楚了,为什么在上传文件的过程中进行目录切换操作报错的问题了,这和我编程之前想的一点儿都不一致,我希望至少要创建两个连接,一个用来进行同步FTP操作,一个进行异步FTP操作,在这里我想问一下,怎么样才能在 FtpRequest.Create 一个新的 FtpRequest 对象的时候自动使用不同的 ServicePoint ??
解决方案 »
- 我也来个小鸡快跑的游戏
- vs2010 sql2005!谁先谁后啊??
- C#如何捕获鼠标在屏幕上的座标?
- C#如何操作已经通过手工打开的word文档。即不是通过C#程序打开的,而是手工已经打开的word文档。
- return string.Format("{0:yyMMddhhmmss}", DateTime.Now);
- 请大家帮帮忙,解决一个C#2005与SQL数据库的问题。
- Image 转成 byte 的问题?
- 有关google地图
- ajax访问一个网站未返回数据,在浏览器地址栏访问就有数据
- 使用.Net控件可以实现类似Excel筛选菜单的效果吗?
- 请教高手,如何开发这类软件(图)!!!
- 向数据库中添加数据
如果说有人回复了,我再点“无满意结贴”扣分情有可愿,但是在没有人回复的情况下,点“无满意结贴”也要扣掉分数,太无耻了。