connection - System.Net.Sockets.SocketException (10061)
问题描述
我使用 SendgridAPI 向用户发送确认电子邮件。我在 sendgrid 应用程序(https://app.sendgrid.com)中创建 API_key 并将其 api 安装在我的项目中。
我在c#中的执行代码是这样的:
public static async Task<bool> Execute(string userEmail, string userName, string plainTextContent, string htmlContent, string subject)
{
var apiKey = "SG.E43545453453URY1A.tq8j-fduDHDKONPuf_Gp1W35IkQjI-DzRsAsmgdfdfg5DgEBM";
var client = new SendGridClient(apiKey);
var from = new EmailAddress("test@example.com", "Mehran");
var to = new EmailAddress(userEmail, userName);
var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent);
var response = await client.SendEmailAsync(msg);
return await Task.FromResult(true);
}
我称之为这种方法。运行应用程序和此方法时,抛出以下异常:
System.Net.Http.HttpRequestException: No connection could be made because the target machine actively refused it.
---> System.Net.Sockets.SocketException (10061): No connection could be made because the target machine actively refused it.
at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at SendGrid.Helpers.Reliability.RetryDelegatingHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
at SendGrid.BaseClient.MakeRequest(HttpRequestMessage request, CancellationToken cancellationToken)
at SendGrid.BaseClient.RequestAsync(Method method, String requestBody, String queryParams, String urlPath, CancellationToken cancellationToken)
at SendGrid.BaseClient.SendEmailAsync(SendGridMessage msg, CancellationToken cancellationToken)
at AnguralToApi.Services.SendGridAPI.Execute(String userEmail, String userName, String plainTextContent, String htmlContent, String subject) in E:\Asp.Net Project\AnguralToApi\AnguralToApi\Services\SendGridAPI.cs:line 19
at AnguralToApi.Controllers.AccountController.Register(RegisterModelView model) in E:\Asp.Net Project\AnguralToApi\AnguralToApi\Controllers\AccountController.cs:line 66
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Logged|12_1(ControllerActionInvoker invoker)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
HEADERS
=======
Accept: */*
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Length: 91
Content-Type: application/json
Host: localhost:49839
User-Agent: PostmanRuntime/7.26.1
Postman-Token: 6131aae5-b461-4be5-bc78-3aef28950a5e
你能帮帮我吗?!
解决方案
First off, never place an API key into a public forum or check into source control as this can mean someone could use it spam from your account.
Second, the type of connection error makes me think that you are blocked from connecting to sendgrid from a firewall, anti-virus,etc. Another possibility is that the machine that api.sendgrid.com is resolving to is not correct.
推荐阅读
- xamarin.forms - 在导航栏中显示返回按钮
- javascript - Window.localstorage 不能正常工作?
- slurm - slurm:错误:安全违规,从 uid 1000 ping RPC
- java - ClassCastException 使用泛型和可变参数
- c# - 检查表单是否具有焦点或处于活动状态
- php - PHP curl 向 Node.js 发送消息不返回结果
- ms-access-2007 - 如何从访问数据库表中查找和定位数据并使用已更改的相关字段更新另一个表
- ios - 哪种数值数据类型的精度最高?
- ios - 是否需要保留对 URLSessionTask 的引用?
- maya - 全局变量的初始化需要一个常量值