错误CS0029无法将类型'Microsoft.AspNetCore.Mvc.ActionResult'隐式转换为'System.Collections.Generic.List <>'

时间:2019-03-10 00:07:33

标签: c# .net asynchronous asp.net-web-api actionresult

我尝试了堆栈溢出中发布的解决方案,但没有一个起作用。 我有一个调用Web服务的方法。代码如下,并且我不断收到编译器错误。因此,我无法进一步测试出了什么问题。 代码如下:

    public async Task<ActionResult <List<items>>>getitems()
    {          

        HttpClient client = new HttpClient();
        client.BaseAddress = new Uri("https://localhost:5001/");
        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Accept.Add(
        new MediaTypeWithQualityHeaderValue("application/json"));


        var Res = await client.PostAsJsonAsync("api/sub", ids);
        Res.EnsureSuccessStatusCode();

        if (Res.IsSuccessStatusCode)
        {

            var Response = Res.Content.ReadAsStringAsync().Result;


            var sub = JsonConvert.DeserializeObject<JArray>(Response);

            List<items> item = sub.ToObject<List<items>>();


            return Ok(item);
        }
    }

然后我从另一个类中调用该方法,如下所示

    public async Task<List<items>> getService(List<string> ids)
    {
        var IdentificationIdsToOrder = new JObject();
        foreach (var id in ids)
        {
            var newId = new JProperty("ids", id);
            IdentificationIdsToOrder.Add(newId);
        }

        _controller = new getitems();
        var Res = await _controller.getitems();         
        var ItemList = Res.Result;
        return ItemList;

    }
}

这里返回值有问题,我无法编译。 我想念的是什么?

1 个答案:

答案 0 :(得分:1)

getService方法中,您应该使用var ItemList = Res.Value;代替var ItemList = Res.Result;

public async Task<List<items>> getService(List<string> ids)
{
    var IdentificationIdsToOrder = new JObject();
    foreach (var id in ids)
    {
        var newId = new JProperty("ids", id);
        IdentificationIdsToOrder.Add(newId);
    }

    _controller = new getitems();
    var Res = await _controller.getitems();         
    var ItemList = Res.Value;
    return ItemList;

}