You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#异步HttpClient调用Put方法无输出 无法打印HTTP响应状态码

故障根因

异步方法Put()返回Task对象时,你在同步Main方法中没有等待该任务执行完成,控制台主线程完成发起HTTP请求的操作后就直接执行到Main方法末尾退出进程,根本不会等待接口响应返回,自然不会执行后续打印状态码的逻辑。
你之前在client.Put()后添加的打印"hi"代码可以正常输出,是因为异步方法执行到内部第一个await关键字时,就会立刻将未完成的Task返回给调用方,主线程拿到返回值后不会等待任务后续执行,直接往下运行打印"hi"的同步代码,执行完后直接退出进程,和你观察到的现象完全吻合。

修复方案

标准修复(支持.NET Core 2.1+、.NET 5+ 所有新版本)

将程序入口Main方法改为异步入口,调用Put()时添加await关键字等待任务执行完成即可,修改后可正常拿到响应打印状态码,完整参考代码:

using System;
using System.Text;
using System.Net.Http;
using System.Threading.Tasks;

namespace ConsoleApp7
{
    class Program
    {
        // 异步程序入口
        static async Task Main(string[] args)
        {
            YourClient client = new YourClient();
            // 等待PUT请求执行完成
            await client.Put();
        }

        public class YourClient
        {
            private readonly HttpClient _client;

            public YourClient()
            {
                _client = new HttpClient();
            }

            public async Task Put()
            {
                using (var request = new HttpRequestMessage(HttpMethod.Put, "https://api.minecraftservices.com/minecraft/profile/name/egg"))
                {
                    request.Headers.Add("Authorization", "Bearer token");
                    request.Content = new StringContent("body", Encoding.UTF8, "application/json");

                    using (var response = await _client.SendAsync(request))
                    {
                        var data = await response.Content.ReadAsStringAsync();
                        var code = response.StatusCode;
                        Console.WriteLine(Convert.ToString(code));

                        // 自定义响应数据处理逻辑
                    }
                }
            }
        }
    }
}

旧环境兼容方案(.NET Framework等不支持异步Main的场景)

如果使用的是不支持异步入口的老旧框架版本,可以在调用Put()后调用Wait()方法阻塞主线程,等待异步任务执行完毕再退出进程:

static void Main(string[] args)
{
    YourClient client = new YourClient();
    client.Put().Wait();
}

提示:该阻塞写法仅适用于控制台场景,不要在WPF、WinForms等带UI同步上下文的程序中使用,会触发死锁。

内容的提问来源于stack exchange,提问作者Hud Kad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 06:18:09