c# - HttpClient GetAsync 未按预期工作

标签 c# uwp asp.net-core-mvc

当使用 Postman 测试我的 Web API 时,我的 API 执行得很好!

当谈到在我的客户端应用程序中使用 HttpClient 运行代码时,代码执行时没有错误,但在服务器上没有预期的结果。 会发生什么?

来 self 的客户端应用程序:

private string GetResponseFromURI(Uri u)
{
    var response = "";
    HttpResponseMessage result;
    using (var client = new HttpClient())
    {
        Task task = Task.Run(async () =>
        {
            result = await client.GetAsync(u);
            if (result.IsSuccessStatusCode)
            {
                response = await result.Content.ReadAsStringAsync();
            }
        });
        task.Wait();
    }
    return response;
}

这是 API Controller :

[Route("api/[controller]")]
public class CartsController : Controller
{
    private readonly ICartRepository _cartRepo;

    public CartsController(ICartRepository cartRepo)
    {
        _cartRepo = cartRepo;
    }

    [HttpGet]
    public string GetTodays()
    {
        return _cartRepo.GetTodaysCarts();
    }

    [HttpGet]
    [Route("Add")]
    public string GetIncrement()
    {
        var cart = new CountedCarts();
        _cartRepo.Add(cart);

        return _cartRepo.GetTodaysCarts();
    }

    [HttpGet]
    [Route("Remove")]
    public string GetDecrement()
    {
        _cartRepo.RemoveLast();
        return _cartRepo.GetTodaysCarts();
    }


}

请注意,这些 API 调用在从 Postman 调用时按预期工作。

最佳答案

您不应该将 await 与 client.GetAsync 一起使用,它由 .Net 平台管理,因为您一次只能发送一个请求。

就这样用吧

var response = client.GetAsync("URL").Result;  // Blocking call!

            if (response.IsSuccessStatusCode)
            {
                // Parse the response body. Blocking!
                var dataObjects = response.Content.ReadAsAsync<object>().Result;

            }
            else
            {
                var result = $"{(int)response.StatusCode} ({response.ReasonPhrase})";
               // logger.WriteEntry(result, EventLogEntryType.Error, 40);
            }

关于c# - HttpClient GetAsync 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43148155/

相关文章:

javascript - 在 ASP.NET 表单中提交更改的 FormData,以便通过 ModelState 和重定向实现正常行为

C# 在消息框的标题中显示 unicode 文本

c# - SHGetImageList - 用于较小图标的 SHIL_JUMBO (32,32)

C# LINQ 如何从数据库中获取数据源?

c# - 使用 MseStreamSource 播放 MPEG-2 TS

jquery - 在 ASP.Net Core 中发布 json 时,MVC 模型为 null

asp.net - 有没有办法在 .NET Core 1.0 MVC 的 View 中使用授权策略?

c# - HttpWebRequest 响应内容的编码问题

c# - 在 UWP 中创建一个好看的 SplitView

c# - 如何在 C# UWP 中从 Azure 移动应用程序读取数据