上傳文件報錯System.Net.ProtocolViolationException: 必須先將 ContentLength 字節寫入請求流,然后再調用 [Begin]GetResponse。


在上傳文件的時候報錯。

錯誤:

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);//這個函數是用來傳輸文件流的,


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM