我的C#控制台应用程序在发出post请求时退出

我的C#控制台应用程序在发出post请求时退出,c#,visual-studio,C#,Visual Studio,我想发布一个json对象,我编写的代码如下 public static async Task<HttpResponseMessage> MakeAsyncPostJsonRequest<T>(string url, T obj) { using (var client = new HttpClient() { Timeout = new TimeSpan(0, 5, 0), BaseA

我想发布一个json对象,我编写的代码如下

public static async Task<HttpResponseMessage> MakeAsyncPostJsonRequest<T>(string url, T obj)
    {
        using (var client = new HttpClient()
        {
            Timeout = new TimeSpan(0, 5, 0),
            BaseAddress = new Uri(url)
        })
        {
            client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type: application/x-www-form-urlencoded", "application/json");
            var content = new StringContent(JsonConvert.SerializeObject(obj), Encoding.UTF8, "application/json");
            var result = await client.PostAsync(url, content);
            return result;
        }
    }
部分程序始终以“代码0”退出。我确认了url和json内容,它们非常好。 更奇怪的是,我在另一个程序中使用了完全相同的代码,并且在那里工作得很好,都在同一台pc中使用相同的visual studio,所以我不知道为什么会发生这种情况

为了添加上下文,我使用它登录并从响应中获取访问令牌。我这样称呼这个方法

public static async Task<string> GetNewAccessToken()
        {

            var loginDetails = new LoginDto(ConfigurationManager.AppSettings["email"], ConfigurationManager.AppSettings["password"]);
            var response = await ServiceHelper.MakeAsyncPostJsonRequest(ConfigurationManager.AppSettings["LoginUrlLocal"], loginDetails);
            var responseBody = JsonConvert.DeserializeObject<LoginResponseDto>(await response.Content.ReadAsStringAsync());
            return responseBody.AccessToken;
        }
公共静态异步任务GetNewAccessToken()
{
var loginDetails=new LoginDto(ConfigurationManager.AppSettings[“email”]、ConfigurationManager.AppSettings[“password”]);
var response=await serviceheloper.MakeAsyncPostJsonRequest(ConfigurationManager.AppSettings[“LoginURL”],loginDetails);
var responseBody=JsonConvert.DeserializeObject(wait response.Content.ReadAsStringAsync());
返回responseBody.AccessToken;
}

您是使用
静态异步任务Main()
还是仅使用
静态void Main()
作为入口点?如何调用
MakeAsyncPostJsonRequest
?在应用程序的生命周期中使用一个HttpClient实例。“HttpClient将被实例化一次,并在应用程序的整个生命周期内重复使用。为每个请求实例化HttpClient类将耗尽重载下可用的套接字数量。这将导致SocketException错误。”-请添加调用部分。上面的代码片段甚至不会编译,但我想这可能是c&p错误。我编辑了这篇文章,添加了如何调用该部分@JohnWuAs是一个故障排除步骤(我不建议您这样做)更改
wait client.PostAsync(url、内容)
客户端.PostAsync(url,内容).Result。如果这消除了症状,则程序中的
async
s和
await
s存在问题。
public static async Task<string> GetNewAccessToken()
        {

            var loginDetails = new LoginDto(ConfigurationManager.AppSettings["email"], ConfigurationManager.AppSettings["password"]);
            var response = await ServiceHelper.MakeAsyncPostJsonRequest(ConfigurationManager.AppSettings["LoginUrlLocal"], loginDetails);
            var responseBody = JsonConvert.DeserializeObject<LoginResponseDto>(await response.Content.ReadAsStringAsync());
            return responseBody.AccessToken;
        }