WebClient上传文件异常
Uri uri = new Uri("http://172.16.102.37/seeyon/uploadService.do?method=processUploadService&senderLoginName=zhouquandang&token=" + a8_token.id + "");
             string fileName = "201149154759.xlsx";
              //写入数据流
             byte[] postdata = System.Text.Encoding.ASCII.GetBytes(string.Format("{0}writeInfo",DateTime.Now.ToString("yyyy-MM-dd HH:ss")));
             WebClient client = new WebClient();
             client.Credentials = CredentialCache.DefaultCredentials;
             FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
             try
             {
                 BinaryReader br = new BinaryReader(fs,new ASCIIEncoding());
                 br.BaseStream.Position = 0;// Set Position to the beginning of the stream.
             try
             {
                 byte[] postArray = br.ReadBytes((int)fs.Length);
                 Stream postStream = client.OpenWrite(uri, "POST");
                 if (postStream.CanWrite)
                 {
                     postStream.Write(postArray, 0, postArray.Length);
                     MessageBox.Show(fileName + "上传成功");
                 }
                 else
                 {
                     MessageBox.Show("文件目录不可写");
                 }
                 postStream.Close();
             }
             catch (WebException errMsg)
             {
                 MessageBox.Show("上传失败:" + errMsg.Message);
             }
         }
         catch (InvalidOperationException ioorx)
         {
             MessageBox.Show(ioorx.ToString());
         }
这个上传是在我的winform程序上通过java程序提供的方法上传到其文件夹下,运行后提示上传成功,但是实际上并没有上传上去。当我断点运行的时候在BinaryReader br = new BinaryReader(fs,new ASCIIEncoding());
出现异常:“br.BaseStream.ReadTimeout”引发了“System.InvalidOperationException”类型的异常
“br.BaseStream.WriteTimeout”引发了“System.InvalidOperationException”类型的异常
此流上不支持超时。
请问大家如何解决啊 谢谢了
------解决方案--------------------
------解决方案--------------------用webclient的异步方法
------解决方案--------------------
还有webclient不支持超时设置,用webrequest代替
http://msdn.microsoft.com/zh-cn/library/d4cek6cc(v=VS.80).aspx
------解决方案--------------------
不知道楼主解决没有,这个是我以前写的一个上传方法
//参数的filename是要上传的文件名,path是要上传的文件在你本机的路径
private void uploadFile(string filename, string path)
       {
           result = false;
           using (WebClient upload = new WebClient())
           {
               #region 没有用到这个方法|应该比现在的方法好
               // Server  URL
               string uriString = "http://aaaaaa.com/upload/updata/" + filename;
               string fileName = path;
               FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
               BinaryReader br = new BinaryReader(fs);
               Byte[] postArray = br.ReadBytes(Convert.ToInt32(fs.Length));
               Stream postStream = upload.OpenWrite(uriString, "PUT");
               if (postStream.CanWrite)
               {
                   postStream.Write(postArray, 0, postArray.Length);
                   result = true;
               }
               postStream.Close();
               fs.Close();
               #endregion
           }
       }