c# - 解决方法 由于目标机器主动拒绝,无法建立连接 127.0.0.1:64527
问题描述
我有一个依赖于 Web API 应用程序的 MVC 应用程序,我将这两个应用程序托管在共享托管环境中。子域上的 API 和主域上的 MVC API 是 api.mydomain.com,MVC 是 mydomain.com,只要我在邮递员或浏览器上尝试,该 API 就可以正常工作,但 MVC 无法连接到它并出现以下错误。
无法建立连接,因为目标机器主动拒绝它 127.0.0.1:64527 描述:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.Net.Sockets.SocketException:无法建立连接,因为目标机器主动拒绝它 127.0.0.1:64527
源错误:
在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。
堆栈跟踪:
[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& exception) +256[WebException:无法连接到远程服务器]
System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) +606 System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar) +64[HttpRequestException: 发送请求时出错。]
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58 System.Runtime.CompilerServices.TaskAwaiter1.GetResult() +28 SMMClient.<Setting>d__119
1 C:\Users\Dload\documents\visual studio 2017\Projects\SMM\SMMClient\Proc.cs 中的 .MoveNext():1369
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)+99
System.Runtime.CompilerServices。 TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)+58 System.Runtime.CompilerServices.TaskAwaiter 1.CallEndDelegate(IAsyncResult asyncResult)+10 System.Web.Mvc.Async.WrappedAsyncResultBase1.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.WrappedAsyncResult1.End() +49
1.CallEndDelegate(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +34
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
System.Web.Mvc.Async.WrappedAsyncResult
System.Web.Mvc.Async.WrappedAsyncResultBase 1.CallEndDelegate(IAsyncResult asyncResult) +10 System.Web.Mvc.Async.WrappedAsyncResultBase 1.CallEndDelegate(IAsyncResult asyncResult) +29 System.Web.Mvc .Async.WrappedAsyncResultBase 1.CallEndDelegate(IAsyncResult asyncResult) +22 System.Web.Mvc.Async.WrappedAsyncResultBase 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 结果) +91.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.WrappedAsyncResult1.End() +48
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27
System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +13
System.Web.Mvc.Async.WrappedAsyncVoid1.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.WrappedAsyncVoid1.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
System.Web.CallHandlerExecutionStep.InvokeEndHandler(IAsyncResult ar) +152 System.Web.CallHandlerExecutionStep.OnAsyncHandlerCompletion(IAsyncResult ar) +125
这就是我从 Global.asax.cs 连接到 API 的方式
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);
}
}
我可以从本地 MVC 应用程序连接到实时 API,但我无法从实时 MVC 应用程序连接到 API。
我会很高兴得到一些帮助。
解决方案
当您的防火墙阻止连接或托管服务的进程未在该端口上侦听时,会发生此错误。参考这些链接:
http://forums.asp.net/t/1223846.aspx/1
https://www.codeproject.com/Questions/426966/System-Net-Sockets-SocketExcep
推荐阅读
- mysql - MySQL 组计数百分比
- javascript - vscode-ripgrep 未在 VSCode 构建/运行过程中安装
- python-3.x - 将 Unicode 数据加载到 Oracle 中
- markdown - Github 页面仅在导航到 markdown 链接时显示 index.html 内容
- powershell - “get-process”的远程执行失败,无法连接到远程机器
- angular - 量角器/角度无法点击可点击图标
- javascript - 自动完成动态添加的输入
- r - R:通过 glm 应用 logit 模型时,stats 包如何处理字符向量?
- javascript - 预加载 Google 字体
- ios - 参数标签 '(MDLObject:)' 与 Xcode 10 中的任何可用重载都不匹配