[英]Calling a Web api from another Web api
是否有可能制作一個稱為另一個網絡API的Web API?
我使用下面的代碼從我的web api訪問web api,但它永遠不會從通話中返回。 如果我使用控制台應用程序中的代碼,它工作正常。
public void DoStuff(){
RunAsync().Wait();
}
public static async Task RunAsync(){
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:53452/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// HTTP GET
HttpResponseMessage response = await client.GetAsync("umbraco/api/Member/Get?username=test");
if (response.IsSuccessStatusCode)
{
string user = await response.Content.ReadAsAsync<string>();
}
}
我也經歷了同樣的問題,經過大量研究后我發現如果HttpClient
返回錯誤500, await
運算符不會停止工作。
為了解決這個問題,我使用了Task.Wait()
。
var response = client.GetAsync ("umbraco/api/Member/Get?username=test");
response.Wait ();
我希望這有助於其他人。
是的,您可以在web api控制器的action方法中調用遠程web api。
讓我們首先消除明顯的。
如果你在這個動作方法的開頭設置一個斷點,那么它會受到影響嗎? 如果沒有,那么問題在於路由而不是動作方法。
如果在if語句中設置斷點,它是否會被命中,或者client.GetAsync()調用是否永遠不會返回?
如果你還沒有完成,你可能希望使用像fiddler這樣的工具( http://www.telerik.com/fiddler )來比較api和這個破壞的工作使用的請求和響應。 我知道你說它與工作實現完全相同,但我發現提琴手非常有價值,無法確認“在網上”發送了什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.