使用WebClient上传文件时的一些问题

最近在使用WebClient做一个客户端上传图片到IIS虚拟目录的程序的时候,遇到了一些问题,这里主要给出参考步骤分享给大家。

测试环境 服务器端:Windows Server 2003,IIS6.0.

上传文件的代码:

using (WebClient client = new WebClient() { Credentials = CredentialCache.DefaultCredentials })
{
    client.UploadFile(uri, "PUT", file);
}  

很简单,就是一个上传文件的代码。

但是客户端仅仅写这些代码不行,还需要进行服务器端IIIS以及虚拟目录的设置。

首先要将服务器的目录映射到IIS。

这个在IIS里面右键添加虚拟目录就可以了。

其次要给IIS虚拟目录加用户以及相应的权限。

否则的话会报:远程服务器返回错误(403)已禁止的错误。

—————————————————————————————————————————————————————————————————————————————

最近在Windows Server 2008 R2系统上面部署出现了很多的问题,这里做个补充说明:

测试环境:

1)、Windows Server 2008 R2 64位

2)、Oracle 11g R2 64位

3)、IIS 7.0

先说说上述WebClient的问题,如果将代码修改为指定用户名及密码的方式,需要在IIS中进行设置。

比如代码修改为:

using (WebClient client = new WebClient() { Credentials = new System.Net.NetworkCredential("用户名", "密码") })
{
      client.UploadFile(uri, "PUT", file);
}  

双击打开身份验证。

开启“Windows身份验证”即可。

如果是匿名用户,则需要开启“匿名身份验证”。

否则会报“远程服务器返回错误 401 未授权”的错误。

此外,由于我们设置了PUT动作,还需要在IIS的授权规则中设置允许PUT。

时间: 2024-10-10 13:45:50

使用WebClient上传文件时的一些问题的相关文章

如何解决上传文件时文件内容相同

现在有这样一个需求:要求在上传文件时,凡是上传的文件,只要内容相同就只在服务器保存一份. 如何比较文件内容?如果当时思维受限,很难想到来比较文件内容的办法. 解决办法: 文件上传,肯定少不了用流来读文件,文件内容相同的根源就是:流读出来的字节码相同.这就想到了解决的办法,可是问题又来了.怎么比较字节码?想想那么长的字节码,如果用字符串的equals方法来比较,这不是一个好的解决办法.经过一番思考,我决定把流读出来的字节码进行MD5加密,用加密后的字符串来当作文件的文件名,然后在进行文件的上传(文

上传文件时自动生成文件夹

#region 返回当前日期的文件夹 /// <summary>        ///上传文件时自动生成文件夹        /// </summary>        /// <param name="path">要保存的路径</param>        /// <returns>返回生成的文件夹</returns>        public static string CreateDis(string pa

[C#]使用WebClient上传文件并同时Post表单数据字段到服务端

转自:http://www.97world.com/archives/2963 之前遇到一个问题,就是使用WebClient上传文件的同时,还要Post表单数据字段,一开始以为WebClient可以直接做到,结果发现如果先Post表单字段,就只能获取到字段及其值,如果先上传文件,也只能获取到上传文件的内容.测试了不少时间才发现WebClient不能这么使用. Google到相关的解决思路和类,因为发现网上的一些文章不是介绍得太简单就是太复杂,所以这里简单整理一下,既能帮助自己巩固知识,也希望能够

PHP上传文件时无法上传成功,$_FILES[&#39;screenshot&#39;][&#39;tmp_name&#39;]为空

最近在学习<HeadFirst PHP & MySQL>一书的第5章"使用存储在文件中的数据",做一个文件上传的应用时,出现了错误,就是文件无法成功上传.这个问题困扰了我很久,不过还好最后终于解决了.原因是我上传的图片文件大小超过了HTML 表单中 MAX_FILE_SIZE 选项指定的值32768Bytes即32KB导致无法上传成功. 我使用了XAMPP(Apache + MySQL + PHP + Perl)集成开发包和Zend Studio 10.6作为PHP

在使用 AjaxFileUpload 上传文件时,在项目发布到 iis 后,图片不能预览

在使用 AjaxFileUpload  上传文件时,图片已经上传成功了,在站点没有发布时,可以预览,可是在项目发布到 iis 后,图片就不能预览,在网上找了很多的方案也没解决,最后的解决方案如下: 1.开始运行 regedit 打开注册表,先备份注册表 2.找到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters 3.在 编辑 菜单上指向 新建 ,然后单击 DWORD 值 . 4.键入 EnableAggres

关于上传文件时,提示控制台信息存取失败的解决方法

 如下图所示,用户在上传文件时,提示控制台信息存储失败,无法继续操作. 1.原因分析: ①上传服务异常,可能是数据中心的传服务出现异常 ②查看相关日志,可能的原因,一般是读取加密狗失败,或者服务器IIS未允许ISAPI和CGI限制. 2.根据上述分析,解决方法如下: ①数据中心快速检测:浏览器输入http://IP/viewgood_dcs ②上传服务快速检测:浏览器输入http://IP/viewgood_cdn/1.cdn 总结,在产品正常的使用过程中,难免会遇到各种大大小小的问题,尤其

用PHP上传文件时$_FILES中error返回值详解

用PHP上传文件时,我们会用程序去监听浏览器发送过来的文件信息,首先会通 过$_FILES[fieldName]['error']的不同数值来判断此欲上传的文件状态是否正常.$_FILES[fieldName] ['error']==0代表一切正常,其它数值的具体含义请参考下面一段程序的注释部分,如有翻译不到之处还望指正! switch($_FILES[$field]['error']) { case 1:            // 文件大小超出了服务器的空间大小            $th

关于form 上传文件时的小问题

平时的form一般写成这样: <form action=" " method="" id="" name=""> 当需要上传文件时 必须要加一个属性 即: <form ......   enctype="mulitpart/form-data"> 表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码.默认情况,这个编码格

使用WebClient上传文件并同时Post表单数据字段到服务端

之前遇到一个问题,就是使用WebClient上传文件的同时,还要Post表单数据字段,一开始以为WebClient可以直接做到,结果发现如果先 Post表单字段,就只能获取到字段及其值,如果先上传文件,也只能获取到上传文件的内容.测试了不少时间才发现WebClient不能这么使用. Google到相关的解决思路和类,因为发现网上的一些文章不是介绍得太简单就是太复杂,所以这里简单整理一下,既能帮助自己巩固知识,也希望能够帮到大家!如果大家有什么不明白,可以直接留言问我. 关于WebClient上传