【发布时间】:2017-01-07 02:39:11
【问题描述】:
我有一个调用 Web API(POST 端点)的 ServiceInvoker
public async Task<HttpResponseMessage> InvokeService(string url, string action)
{
string requestUri = @"api/MyController/" + action;
HttpResponseMessage response;
HttpClientHandler handler = new HttpClientHandler()
{
UseDefaultCredentials = true
};
using (var client = new HttpClient(handler))
{
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
response =await client.PostAsJsonAsync(requestUri, myObj);
}
return response;
}
当我调试时,PostAsJsonAsync 执行后,控制转到main()。同样,如果没有调试,我也无法使用该服务。当我这样做时它会起作用
response =client.PostAsJsonAsync(requestUri, myObj).Result;
但它是同步的。
这个方法是从main()调用的
void main()
{
Start()
}
public void Start()
{
Process();
}
public async Task Process()
{
HttpResponseMessage servResponse;
servResponse=await InvokeService("http://myServiceUrl","myAction");
}
我的要求是从不同的应用程序对服务进行大量调用。我想让调用异步以提高性能。
【问题讨论】:
标签: c# asp.net-web-api async-await