Как исправить Не удалось установить соединение, потому что целевая машина отказалась от него 127.0.0.1:64527

У меня есть приложение MVC, которое зависит от приложения веб-API, я разместил их в общей среде хостинга. API в поддомене и MVC в основном домене, API - это api.mydomain.com, а MVC - mydomain.com, API работает нормально каждый раз, когда я пробую его в почтальоне или браузере, но MVC не может подключиться к нему со следующей ошибкой.

Невозможно установить соединение, потому что целевая машина активно отказалась от него 127.0.0.1:64527 Описание. Необработанное исключение произошло во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительных сведений об ошибке и ее происхождении в коде.

Сведения об исключении: System.Net.Sockets.SocketException: соединение не может быть установлено, поскольку целевая машина активно отказалась от него 127.0.0.1:64527

Ошибка источника:

Необработанное исключение было создано во время выполнения текущего веб-запроса. Информацию о происхождении и местонахождении исключения можно определить с помощью трассировки стека исключений ниже.

Трассировки стека:

[SocketException (0x274d): невозможно установить соединение, потому что целевая машина активно отказалась от него 127.0.0.1: 64527]
System.Net.Sockets.Socket.InternalEndConnect (IAsyncResult asyncResult) +6995036
System.Net. Sockets.Socket.EndConnect (IAsyncResult asyncResult) +84
System.Net.ServicePoint.ConnectSocketInternal (Boolean connectFailure, Socket s4, Socket s6, Socket & socket, IPAddress & address, ConnectSocketState state, IAsyncResult + asyncResult + Exception &Result исключение)

[WebException: невозможно подключиться к удаленному серверу]
System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) +606 System.Net.Http.HttpClientHandler.GetResponseCallback (IAsyncResult ar) +64

[HttpRequestException: произошла ошибка при отправке запроса.]
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача задачи) +99
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задача) +58 System. Runtime.CompilerServices.TaskAwaiter1.GetResult() +28 SMMClient.<Setting>d__1191.MoveNext () в C: \ Users \ Dload \ documents \ visual studio 2017 \ Projects \ SMM \ SMMClient \ Proc.cs: 1369
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task task) +99
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи) +58 System.Runtime.CompilerServices.TaskAwaiter1.GetResult() +28 SIMSClient.Controllers.<Index>d__0.MoveNext() in C:\Users\Dload\documents\visual studio 2017\Projects\SMM\SMMClient\Controllers\HomeController.cs:19
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
System.Web.Mvc.Async.TaskAsyncActionDescriptor.EndExecute(IAsyncResult asyncResult) +97
System.Web.Mvc.Async.<>c__DisplayClass37.<BeginInvokeAsynchronousActionMethod>b__36(IAsyncResult asyncResult) +17
System.Web.Mvc.Async.WrappedAsyncResult
1.CallEndDelegate (IAsyncResult as_Delegate) с. IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResultBase1.End() +49
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +34
System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +26 System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +100
System.Web.Mvc.Async.WrappedAsyncResult
1.CallEndDelegate (IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResultBase (asyncResultResultBase_Dy_ync. ncResult) +29
System.Web.Mvc.Async.WrappedAsyncResultBase1.End() +48
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +38 System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +12
System.Web.Mvc.Async.WrappedAsyncVoid
1.CallEndDelegate (IAsyncResult asyncResult) +22
System.Web.Mvc.Async.WrappedAsyncResultBase1.End() +48
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +28
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10
System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +21
System.Web.Mvc.Async.WrappedAsyncVoid
1.CallEndDelegate .Mvc.Async. ) +9
System.Web.CallHandlerExecutionStep.InvokeEndHandler (IAsyncResult ar) +152 System.Web.CallHandlerExecutionStep.OnAsyncHandlerCompletion (IAsyncResult ar) +125

Вот как я подключаюсь к API из Global.asax.cs

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        Proc.Configure("https://api.mydomain.com/");
    }
}

Так я называю ресурс

public static class Proc
{
    private static HttpClient _client;
    public static void Configure(string Baseurl)
    {
        _client = new HttpClient();
        _client.BaseAddress = new Uri(Baseurl);

        _client.DefaultRequestHeaders.Clear();
        //Define request data format  
        _client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    }

    public static async Task<T> Settings<T>()
    {
        if (!string.IsNullOrWhiteSpace(Account.AccessToken))
            _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Account.AccessToken);

        var resp = await _client.GetAsync($"api/superadmin/settings");

        var txt = await resp.Content.ReadAsStringAsync();

        return JsonConvert.DeserializeObject<T>(txt);
    }
}

Я могу подключиться к живому API из моего локального приложения MVC, но я не могу подключиться к API из живого приложения MVC.

Буду рад получить помощь.


person banji    schedule 09.04.2019    source источник
comment
https://api.mydomain.com/api/superadmin/settings это рабочий URL? Как вы его запускаете? Хост в IIS или отладка из VS?   -  person Roman Marusyk    schedule 10.04.2019
comment
Это рабочий URL-адрес, и он был размещен на сервере общего хостинга.   -  person banji    schedule 11.04.2019


Ответы (2)


Эта ошибка возникает, когда ваш брандмауэр блокирует соединение или процесс, на котором размещена служба, не прослушивает этот порт. Перейдите по этим ссылкам:

http://forums.asp.net/t/1223846.aspx/1

Невозможно установить соединение, потому что цель машина активно отказывалась от этого?

https://www.codeproject.com/Questions/426966/System-Net-Sockets-SocketExcep

person Muhammad Aqib    schedule 11.04.2019
comment
Спасибо, Мухаммад, теперь он работает, все, что я сделал, это повторно развернул мой проект mvc, я изменил его с Debug на Release - person banji; 11.04.2019

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

person Rajesh    schedule 22.01.2020
comment
Я использовал пример с решением, состоящим из двух частей (https://thesharperdev.com/examples-using-httpclient-in-fsharp/). Одна часть для создания и запуска примера сервера на локальном хосте, а вторая - для запуска клиента. Когда я получил эту ошибку, я предположил, что это произошло из-за брандмауэра, но, согласно этому ответу, сервер не прослушивает имя хоста и порт, которые вы назначили. Сервер остановился, поэтому я просто перезапустил его, и клиент заработал. Я снова включил брандмауэр Windows, и он все еще работал нормально. - person Stephen Hosking; 21.06.2021