我在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, 埃迪