2016-04-22 67 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

这看起来更像是评论而不是答案。 –