第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 C# 將大文件上傳到另一個 HTTP 服務(wù)?

如何使用 C# 將大文件上傳到另一個 HTTP 服務(wù)?

C#
回首憶惘然 2022-12-24 10:26:47
我正在開發(fā)一個由 C# 在 .NET Core 2.2 上編寫的項(xiàng)目。在我的代碼中,我需要將一個大文件(大約 2GB)上傳到遠(yuǎn)程 HTTP 服務(wù)器。我不負(fù)責(zé)遠(yuǎn)程服務(wù)器。我只負(fù)責(zé)上傳邏輯。在 C# 中通過 HTTP 上傳大型本地文件的最佳做法是什么?我試過下面的代碼https://github.com/AiursoftWeb/Nexus/blob/master/Pylon/Services/HTTPService.cs#L66-L81    public async Task<string> PostFile(string url, string filepath)    {        var request = new HttpClient();        var form = new MultipartFormDataContent();        string responseString = null;        using (var fileStream = new FileStream(filepath, mode: FileMode.Open))        {            using (var bufferedStream = new BufferedStream(fileStream))            {                form.Add(new StreamContent(bufferedStream), "file", new FileInfo(filepath).FullName);                var response = await request.PostAsync(url, form);                responseString = await response.Content.ReadAsStringAsync();                fileStream.Close();            }        }        return responseString;    }我在該代碼中找不到任何錯誤,它適用于小文件。(約500MB)但是如果我上傳一個大約2GB的大文件就會引發(fā)異常:操作被取消。將內(nèi)容復(fù)制到流時出錯。無法訪問已處置的對象。對象名稱:'SslStream'。我猜流在上傳時被處理掉了。我希望我的整個文件可以成功上傳到遠(yuǎn)程服務(wù)器,并且該過程不會占用我的大部分 RAM。那么我的代碼有什么問題呢?有沒有適合我的例子?附加信息:我查看了上游 HTTP 服務(wù)器的日志,顯示連接已被遠(yuǎn)程客戶端終止。連接持續(xù)了 1.7 分鐘才關(guān)閉。日志說:現(xiàn)有連接被遠(yuǎn)程主機(jī)強(qiáng)制關(guān)閉 現(xiàn)有連接被遠(yuǎn)程主機(jī)強(qiáng)制關(guān)閉
查看完整描述

1 回答

?
ABOUTYOU

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個贊

我發(fā)現(xiàn)了問題:HTTP 客戶端的默認(rèn)超時是 100 秒。源代碼在這里:


https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/HttpClient.cs#L17


我已經(jīng)像這樣更改了我的代碼:


        public async Task<string> PostFile(string url, string filepath)

        {

            var request = new HttpClient

            {

                Timeout = TimeSpan.FromSeconds(3600)

            };

            var form = new MultipartFormDataContent();

            string responseString = null;

            using (var fileStream = new FileStream(filepath, mode: FileMode.Open))

            {

                using (var bufferedStream = new BufferedStream(fileStream))

                {

                    form.Add(new StreamContent(bufferedStream), "file", new FileInfo(filepath).FullName);

                    var response = await request.PostAsync(url, form);

                    responseString = await response.Content.ReadAsStringAsync();

                    fileStream.Close();

                }

            }

            return responseString;

        }

問題解決了。


查看完整回答
反對 回復(fù) 2022-12-24
  • 1 回答
  • 0 關(guān)注
  • 180 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號