2016-07-11 2 views
0

Я создал новый проект Webapi2 и я пытаюсь вызвать внешнюю веб-службу, используя этот код:Использование HttpClient в новом WebAPI проекте

WebServiceAuthResult authResult = new WebServiceAuthResult(); 
using (var httpClient = new HttpClient()) 
{ 
    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credentials); 
    try 
    { 
     var response = await httpClient.PostAsync(url, null); 

     var responseContent = await response.Content.ReadAsStringAsync(); 
     authResult = JsonConvert.DeserializeObject<WebServiceAuthResult>(responseContent); 
    } 
    catch (Exception ex) 
    { 
    } 
} 

Я получаю эту ошибку:

Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.

Я использовал тот же самый код в проекте UWP, и он отлично работает. Поэтому я предполагаю, что что-то не так в моем проекте.

Я рассмотрел вопросы Google и другие вопросы StackOverflow, но все они предлагают проблему с веб-службой, но я знаю, что это работает, поскольку я могу проверить, используя мой проект UWP.

Может ли кто-нибудь предложить что-нибудь для меня попробовать?

+0

Если код работает локально, но не работает на развернутом сервере, то он может быть связан с политикой развернутого сервера. –

+0

Как развертывается ваша служба? Если это проблема с самим собой, может быть связана с учетной записью, которую использует служба: https://msdn.microsoft.com/en-us/library/system.serviceprocess.serviceaccount(v=vs.110).aspx – lavuy

+0

Я просто проверяя локально на данный момент. мое приложение UWP работает локально, также используя эмулятор Windows-телефона. У меня нет информации о том, как настроен веб-сервис, который я вызываю. – Rick

ответ

1

Как обычно бывает с этими вопросами, ответ является одним лайнером, но он занял 4 часа для решения!

Добавив эту строку кода подключения к веб-службе успешно:

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; 

Я добавил код в using заявление, но я думаю, что это требуется только один раз, так что если кто-нибудь может сказать мне, где это лучшее место для добавления этого кода и почему он мне нужен в моем проекте WebApi, а не в моем проекте UWP?

Смежные вопросы