0

.NET HttpClient は API 呼び出しを並列化し、ランダムに例外をスローします: 既存の接続がリモート ホストによって強制的に閉じられました。コンテンツをストリームにコピー中にエラーが発生しました。

リモート サービス: Springboot。

クライアント環境: .NET Framework 4.8、コンソール アプリ。

問題はランダムにスローされましたが、設定されている場合

httpClient.DefaultRequestHeaders.ConnectionClose = true;

問題は解消されましたが、1 回の通話のパフォーマンスが低下し、TCP 接続を活用できません。この問題を解決するには?libレベルのバグのようです。

    static void Main(string[] args)
    {

        RunTask().GetAwaiter().GetResult();
    }


    public async static Task RunTask()

    {
        HttpClient client = new HttpClient();

        for (int j = 0; j < 50; j++)
        {
            List<Task> tasks = new List<Task>();
            for (int i = 0; i < 30; i++)
            {
                tasks.Add(LoadAsync(client));
            }
            await Task.WhenAll(tasks);
            tasks.ForEach(t => t.GetAwaiter().GetResult());
        }


    }

    public async static Task<string> LoadAsync(HttpClient httpClient)
    {
        return await httpClient.GetStringAsync(API_URL);
    }
4

0 に答える 0