在上傳文件的時候報錯。
錯誤:
System.Net.ProtocolViolationException: 必須先將 ContentLength 字節寫入請求流,然后再調用 [Begin]GetResponse。
原因:傳過去的長度和你寫在頭文件的ContentLength 不一致。
解決辦法:
保證ContentLength 和傳輸數據長度一致。
實例:
FileStream fileStream= new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
byte[] SendStreamData = StreamTobyte(signFile);//把文件流轉成byte[]
Post(fileStream);//這個函數是用來傳輸文件流的,這里會報錯,因為現在流的初始位置為結束位置。
我出現這個文件的原因是,文件流已經被我read過了,沒有重新定位。
加上定位代碼,問題解決。
修改如下:
FileStream fileStream= new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
byte[] SendStreamData = StreamTobyte(signFile);//把文件流轉成byte[]
fileStream.Seek(0, SeekOrigin.Begin);//定位到初始位置。新增的代碼
Post(fileStream);//這個函數是用來傳輸文件流的,
