Azure移动服务客户端InvokeApiAsync未达到WebAPI

时间:2018-11-03 06:59:17

标签: asp.net-web-api xamarin.forms azure-mobile-services mobileserviceclient

我似乎无法从我的xamarin Forms移动应用程序中访问Web api。我可以通过PostMan命中api,并且效果很好。

输入文本时运行的命令

return _searchCommand ?? (_searchCommand = new Command<string>(async (text) => await ExecutSearchCommand(text)));

此命令调用我的ExecuteSearchCommand方法,客户端通过该方法进行api调用

async Task ExecuteSearchCommand(string search){
    var table = await App.Client.InvokeApiAsync("api/Item", System.Net.Http.HttpMethod.Get, new Dictionary<string, string> (){ { "filter", search } });
    ...
}

我的ItemController看起来像这样

[MobileAppController]
[Route("api/Item")]
public class ItemController : ApiController
{
    [HttpGet]
    public async Task<IEnumerable<Item>> Get(string filter)
    {
        return await itemRepository.SearchAsync(filter);
    }
}

我这里缺少什么吗?我尝试在本地运行时点击网络api,并将客户端指向localhost以及托管的网络api。

*我确实为android项目设置了互联网权限

1 个答案:

答案 0 :(得分:0)

问题出在这行

var table = await App.Client.InvokeApiAsync("api/Item", System.Net.Http.HttpMethod.Get, new Dictionary<string, string> (){ { "filter", search } });

显然,使用InvokeApiAsync方法时,它已经添加了'api'前缀。删除此问题已解决。