2016-04-22 62 views
4

我的.NET應用程序嘗試使用下面的代碼來訪問外部API ...PostAsync不工作時URL包含端口

using (var keyClient = new HttpClient()) 
{ 
    keyClient.BaseAddress = new Uri(ConfigurationManager.AppSettings["webshopurl"]); 
    var content = new FormUrlEncodedContent(new[] 
    { 
     new KeyValuePair<string, string>("api_username", 
      ConfigurationManager.AppSettings["webshopAPIUserName"]), 
     new KeyValuePair<string, string>("api_password", 
      ConfigurationManager.AppSettings["webshopAPIPassword"]) 
    }); 
    var result = keyClient.PostAsync("/api/v1/key.php", content).Result; 
    token = result.Content.ReadAsStringAsync().Result; 
} 

當從本地機器上調用它正常工作。但是,當它被託管在聯機服務器URL(例如http://app.test.net:5000/test)中時,它不會調用API。如果我們託管像http://app.test.net/test這樣的URL,它就可以正常工作。

這是什麼原因?

+0

什麼錯誤消息,如果你有/遠程服務器上的日誌。開始尋找有關爲什麼它不調用API的線索。 – Nkosi

回答

2

你爲什麼用.Result解開結果?使用await來獲得async方法的結果會更好。 .Result如果您不注意上下文,會導致死鎖。

斯蒂芬克利裏有一個非常好的文章,進入更多的細節。

Don't Block on Async Code

+0

這看起來更像是評論而不是答案。 –