У меня есть проект web api, для которого я включил ssl из свойств и загрузил сертификат в Trusted Root Certification Authority. В этом проекте у меня есть класс, который перенаправляет http в https. У меня есть клиент, который вызывает мой http apiс помощью ngrok этот запрос перенаправляется на порт ssl. Я вставил сертификат, который я скачал на своем компьютере при включении ssl, в Trusted Root Certification Authority на компьютере клиента, но клиент не может получить доступ к API, онговорит, что localhost отказался подключиться и отображает следующие ошибки:
System.AggregateException: произошла одна или несколько ошибок.--->
System.Net.Http.HttpRequestException: при отправке запроса произошла ошибка.--->
System.Net.WebException: невозможно подключиться к удаленному серверу --->
System.Net.Sockets.SocketException: не удалось установить соединение, поскольку целевой компьютерактивно отказался 127.0.0.1:44343
в System.Net.Sockets.Socket.InternalEndConnect (IAsyncResult asyncResult)
в System.Net.Sockets.Socket.EndConnect (IAsyncResult asyncResult)
в System.Net.ServicePoint.ConnectSocketInternal (логическое connectFailure, сокет s4, сокет s6, сокет и сокет, IP-адрес и адрес, состояние ConnectSocketState, IAsyncResult asyncResult, исключение исключения)
--- конец внутреннего исключениятрассировка стека ---
в System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult)
в System.Net.Http.HttpClientHandler.GetResponseCallback (IAsyncResult arat) * 10 * 10
Я назвал свой первый API, используя следующий код:
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:44343/");
HttpResponseMessage response = client.GetAsync("http://ccb7fe34.ngrok.io/api/Server").Result;
if (response.StatusCode == System.Net.HttpStatusCode.OK)
{
using (HttpContent content = response.Content)
{
Task<string> result = content.ReadAsStringAsync();
res = result.Result;
System.Diagnostics.Debug.Write(res);
}
var des = (ForVersion)JsonConvert.DeserializeObject(res, typeof(ForVersion));
string updated_version = des.version;
string current_version = Assembly.GetExecutingAssembly().GetName().Version.ToString();
if (current_version != updated_version)
{
UpdateAvailable f = new UpdateAvailable();
f.ShowDialog();
}
}