首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

WPF中运用WebClient 向win7 上传文件

2013-04-20 
WPF中使用WebClient 向win7 上传文件问题:WPF客户端程序使用webclient向服务器上(操作系统是win7+iis 6)传

WPF中使用WebClient 向win7 上传文件
问题:WPF客户端程序使用webclient向服务器上(操作系统是win7+iis 6)传图片(或者其他文件)时,出现后文的异常,文件就不能正常上传;但是在xp系统上是可以的,开始怀疑是虚拟目录没有写入权限,于是给了IIS_USER写入权限,但是还是不行,求问各位大神有没有遇到此类问题,如何解决呢?


代码:
/////////////////////////////////////

            try
            {
                string serverFullPath = string.Format("{0}{1}", syscfg.ImageSavePathServer, curSnapImageName);
                //string serverFullPath = string.Format("{0}{1}", syscfg.ImageSavePathServer, "test.jpg");

                string clientFullPath = string.Format("{0}{1}", syscfg.ImageSavePath, curSnapImageName);
                WebClient myWebClient = new WebClient();

                myWebClient.Credentials = CredentialCache.DefaultCredentials;

                FileStream fs = new FileStream(clientFullPath, FileMode.Open, FileAccess.Read);

                BinaryReader br = new BinaryReader(fs);

                Byte[] postArray = br.ReadBytes(Convert.ToInt32(fs.Length));

                Stream postStream = myWebClient.OpenWrite(serverFullPath, "PUT");

                if (postStream.CanWrite)
                {
                    postStream.Write(postArray, 0, postArray.Length);
                }
                else
                {
                    throw new Exception("服务器端,没有写权限!");
                }

               
               // br.Close();
              postStream.Close();//一调用该方法就出现405异常 如下所示
              //fs.Close();
             // br.Close();



                return string.Empty;
            }
            catch(Exception ex)


            {
               // MessageBox.Show("上传图片文件失败!","系统提示:");
                string msg = string.Format("Exception message:{0};track {1};ex string{2}",ex.Message,ex.StackTrace,ex.ToString());
                return msg;
            }


////////////////////////////////////////////////////////////////////////////////////
"Exception message:远程服务器返回错误: (405) 不允许的方法。;track    在 System.Net.HttpWebRequest.GetResponse()\r\n   在 System.Net.WebClient.GetWebResponse(WebRequest request)\r\n   在 System.Net.WebClient.WebClientWriteStream.Dispose(Boolean disposing)\r\n   在 System.IO.Stream.Close()\r\n   在 EvalStar.VideoEvaluate.UploadImageToServer() 位置 E:\\TchEvl\\EvalStar\\EvalStar\\VideoEvaluate.xaml.cs:行号 287;ex stringSystem.Net.WebException: 远程服务器返回错误: (405) 不允许的方法。\r\n   在 System.Net.HttpWebRequest.GetResponse()\r\n   在 System.Net.WebClient.GetWebResponse(WebRequest request)\r\n   在 System.Net.WebClient.WebClientWriteStream.Dispose(Boolean disposing)\r\n   在 System.IO.Stream.Close()\r\n   在 EvalStar.VideoEvaluate.UploadImageToServer() 位置 E:\\TchEvl\\EvalStar\\EvalStar\\VideoEvaluate.xaml.cs:行号 287"string


[解决办法]
401 未经授权就是文件夹没有写入权限,iis的目录安全性和物理文件夹都要设置,
另外,serverFullPath需要是完整的http:/xxxx/xx.jpg这样的格式
[解决办法]

IIS6 和IIS 5 的差别确实很大,IIS6的性能是IIS5的N倍了

热点排行