HttpClient.GetAsync не может подключиться к удаленному серверу

У меня есть приложение Windows 8.1, работающее на планшете Windows 10 Enterprise. Это приложение вызывает ASP.NET RESTful Web API, работающий на удаленном сервере. Веб-API использует проверку подлинности Windows. На планшете установлен Fiddler, и я могу выполнять вызовы в веб-API, чтобы убедиться, что веб-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 являются статическими членами моего класса.

_ServiceUri создается из настроек приложения и приводит к красиво отформатированному абсолютному URI, такому как " http://10.120.4.0:5000/". Как я уже сказал, если я выполню команду GET HTTP с Fiddler для URL " http://10.120.4.0:5000/api/user", я получу ожидаемый ответ на своем планшете.

Проблема в том, что мой вызов GetAsync генерирует исключение примерно через 21 секунду. Это не тайм-аут, потому что, как вы видите, я установил тайм-аут на 150 секунд (я знаю, что это слишком много, но сейчас я просто пытался устранить все потенциальные причины). Возникло исключение типа HttpRequestException, и несколько вложенных сообщений информируют меня о том, что я "не могу подключиться к удаленному серверу", потому что "Попытка подключения не удалась, потому что подключенная сторона не ответила должным образом через определенный промежуток времени или не удалось установить соединение потому что подключенный хост не смог ответить 127.0.0.1:8888"

Эта последняя часть действительно озадачивает меня, потому что я не пытаюсь получить доступ к веб-API локально, но удаленно, передав надлежащий удаленный URL-адрес.

Эта проблема беспокоила меня почти две недели, и я до сих пор не могу ее решить. Любое предложение будет высоко оценено.

ТИА, Эдди

0 ответов

Другие вопросы по тегам