C# 中WinForm 应用程序实现远程文件管理(上传、下载)
的种种问题
2012-03-01 13:56
C# 中WinForm 应用程序实现远程文件管理(上传、下载)的种种问题
C# 中WinForm 应用程序实现远程文件管理(上传、下载)的种种问题
WinForm可以通过C#语言提供的WebClient类的UploadFile和DownLoadFile函数实现文件的上传和下载功能,但是这也让我尝试到了使用这个函数时的辛酸,搞了整整一天才成功。而且在使用的环境是win7 + iis7.0,iis7.0和iis6.0相比在,在配置操作上有很大的区别。
1 文件下载,文件下载功能很easy,一个函数,也没有出现任何问题,估计最大的问题就是服务器文件路径找不到,产生的404错误,未找到。
WebClient myClient = new WebClient(); String localfilePath = dialog1.FileName; myClient. DownloadFile
(“http://localhost:2368/upload/fileName”, localfilePath); 2 文件上传功能:
这个功能整整的折磨了我一天,知道晚上9点中才基本搞定。也把种种问题遇到了。
WebClient client = new WebClient ();
// Add a user agent header in case the requested URI contains a query.
client.Headers.Add (\MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)\client.UploadFile(localfile,”PUT”,ServerPath); 2.1 远程服务器返回错误: (401) 添加身份验证:
需要在站点开启身份验证的权限(允许匿名访问,windows 身份验证),在iis7.0内容视图上双击身份验证、开启匿名身份验证和windows身份验证。 2.2 远程服务器返回错误 (403) 已禁止
解决方法:iis虚拟目录的写入权限和uploadfile文件夹给iis_user用户开写入权限。
进入网站的虚拟路径目录,虚拟目录属性给写入权限; 2.3 远程服务器返回错误: (404) 未找到
分析与解决方法:一般是由于UploadFile()函数中中“PUT”、“POST”关键字,要选择使用“PUT”关键字。同时要添加iis的处理程序映射。
WebClient myClient = new WebClient();
myClient.UploadFile(Serverurl,\//UploadFile函数中如果关键字POST,必须改用PUT。同时要配置IIS的功能视图中的处理程序映射,配置过程如下:开始-运行—inetmgr命令,开启ii7,左侧选择虚拟目录,右侧选择功能视图—处理程序映射-双击进入,选择
ExtensionlessUrlHandler-Integrated-4.0双击后,点击请求限制-谓词面板-,下列谓词之一:
GET,HEAD,POST,DEBUG,PUT,DELETE。默认没有PUT,DELETE,添加上。
2.4“远程服务器返回错误: (405) 不允许的方法
解决方法:把网站发布到iis上,设置iis的写入权限和上传文件夹的写入权限。不知道为什么在本地调试都是报这种错误,把网站发布到iis上,再通过iis访问就可以通过了,邪乎~。
2.5“远程服务器返回错误: (500) 内部服务器错误 分析与解决方法:可能是client信息头需要设置, WebClient client = new WebClient ();
// Add a user agent header in case the requested URI contains a query.
client.Headers.Add (\(compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)\