У меня есть приложение 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 (логическое connectFailure,
Сокет s4, Сокет s6, Сокет и сокет, IP-адрес и адрес,
Состояние ConnectSocketState, IAsyncResult asyncResult, Исключение &
исключение) + 256
[WebException: невозможно подключиться к удаленному серверу]
System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult)
+606 System.Net.Http.HttpClientHandler.GetResponseCallback (IAsyncResult
ар) + 64
[HttpRequestException: при отправке запроса произошла ошибка.]
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task
задание) + 99
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task
задача) +58 System.Runtime.CompilerServices.TaskAwaiter 1.GetResult()
+28 SMMClient.<Setting>d__119
1.MoveNext () в C: \ Users \ Dload \ documents \ visual studio
2017 \ Projects \ SMM \ SMMClient \ Proc.cs: 1369
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task
задание) + 99
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task
задача) +58 System.Runtime.CompilerServices.TaskAwaiter 1.GetResult()
+28 SIMSClient.Controllers.<Index>d__0.MoveNext() in C:\Users\Dload\documents\visual studio
2017\Projects\SMM\SMMClient\Controllers\HomeController.cs:19<br>
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
task) +99<br>
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
task) +58<br>
System.Web.Mvc.Async.TaskAsyncActionDescriptor.EndExecute(IAsyncResult
asyncResult) +97<br>
System.Web.Mvc.Async.<>c__DisplayClass37.<BeginInvokeAsynchronousActionMethod>b__36(IAsyncResult
asyncResult) +17<br>
System.Web.Mvc.Async.WrappedAsyncResult
1.CallEndDelegate (IAsyncResult
asyncResult) + 10
System.Web.Mvc.Async.WrappedAsyncResultBase 1.End() +49<br>
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult
asyncResult) +34<br>
System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d()
+50 System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
+228 System.Web.Mvc.Async.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult) +10<br>
System.Web.Mvc.Async.WrappedAsyncResult
1.CallEndDelegate (IAsyncResult
asyncResult) + 10
System.Web.Mvc.Async.WrappedAsyncResultBase 1.End() +49<br>
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult
asyncResult) +34<br>
System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c()
+26 System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult
asyncResult) +100<br>
System.Web.Mvc.Async.WrappedAsyncResult
1.CallEndDelegate (IAsyncResult
asyncResult) + 10
System.Web.Mvc.Async.WrappedAsyncResultBase 1.End() +48<br>
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult
asyncResult) +27<br>
System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult
asyncResult, ExecuteCoreState innerState) +13<br>
System.Web.Mvc.Async.WrappedAsyncVoid
1.CallEndDelegate (IAsyncResult
asyncResult) + 29
System.Web.Mvc.Async.WrappedAsyncResultBase 1.End() +48<br>
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)
+38 System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +12<br>
System.Web.Mvc.Async.WrappedAsyncVoid
1.CallEndDelegate (IAsyncResult
asyncResult) + 22 * 1036 *
System.Web.Mvc.Async.WrappedAsyncResultBase 1.End() +48<br>
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +28<br>
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult
asyncResult) +10<br>
System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult
asyncResult, ProcessRequestState innerState) +21<br>
System.Web.Mvc.Async.WrappedAsyncVoid
1.CallEndDelegate (IAsyncResult
asyncResult) + 29
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End () + 48
System.Web.Mvc.MvcHandler.EndProcessRequest (IAsyncResult asyncResult)
+28 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest (IAsyncResult
результат) + 9
System.Web.CallHandlerExecutionStep.InvokeEndHandler (ar IAsyncResult ar)
+152 System.Web.CallHandlerExecutionStep.OnAsyncHandlerCompletion (IAsyncResult
ар) + 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.
Я буду рад получить помощь.