HttpClient.GetAsync无法连接到远程服务器

时间:2016-09-01 17:41:08

标签: wpf asp.net-web-api windows-8.1 dotnet-httpclient getasync

我在Windows 10企业版平板电脑上运行Windows 8.1应用程序。此应用程序调用在远程服务器上运行的ASP.NET RESTful Web API。 Web API使用Windows身份验证。我在平板电脑上安装了Fiddler,我可以调用Web API,以证明Web API可供外界使用。

以下是我用来拨打电话的代码:

if (WebApiAuthClientHandler == null)
{
   WebApiAuthClientHandler = new HttpClientHandler()
   {
      Credentials = CredentialCache.DefaultNetworkCredentials,
      ClientCertificateOptions = ClientCertificateOption.Automatic
   };
}

if (WebApiHttpClient == null)
{
   WebApiHttpClient = new HttpClient(WebApiAuthClientHandler)
   {
      BaseAddress = new Uri(_serviceUri, UriKind.Absolute),
      Timeout = new TimeSpan(0, 0, 150)
   };

   WebApiHttpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
}

HttpResponseMessage response = await WebApiHttpClient.GetAsync("api/user", HttpCompletionOption.ResponseContentRead).ConfigureAwait(continueOnCapturedContext: false);

var userLoginInfo = await response.Content.ReadAsAsync<UserLoginInformation>();

其中WebApiAuthClientHandler和WebApiHttpClient是我的班级&#39;静态成员。

_serviceUri是根据应用程序的设置构建的,并产生格式良好的绝对URI,例如&#34; http://10.120.4.0:5000&#34;。 就像我说的,如果我向Fiddler发出GET HTTP命令到URL&#34; http://10.120.4.0:5000/api/user&#34;我在平板电脑上得到了预期的响应。

问题是我的GetAsync调用在大约21秒后抛出异常。这不是超时,因为正如你所看到的,我将超时设置为150秒(我知道它太多了,但是现在我只是想消除所有可能的原因)。 抛出的异常是HttpRequestException类型,并且几个嵌套消息告诉我,我是&#34;无法连接到远程服务器&#34;因为&#34;连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机无法响应127.0.0.1:8888"

这最后一部分真的让我感到困惑,因为我没有尝试在本地但远程访问Web API,而是通过了正确的远程URL地址。

这个问题已经困扰了我近两周,我仍然没有解决它。任何建议都将受到高度赞赏。

TIA, 埃迪

0 个答案:

没有答案