问题描述
我的应用程序部署在 aws 服务器中。
整个过程是这样的:我连接到 2 个 API:一个获取令牌,另一个(使用所述令牌)获取 json 数据,我稍后必须将其转换为 PDF 文件。
当我在我的本地主机上运行应用程序时,我不需要使用代理,但是当我部署它时,第二个 API 需要这个代理的一个实例:http://proxy.aws.cnb
我会写一个小图例,以便您了解您将在我的代码中看到的一些变量的值:
- 代理网址:http://proxy.aws.cnb
- UseProxyApiPDF:真。如果我在本地运行应用程序,则为 False
- URLPDFs:API 的 URL
- 接受:application/json
这是第二个 API 连接的代码。如果 Token 成功获取,它就会被执行,这种情况总是如此:
IRestResponse<Accesstoken> responsetoken = clientToken.Execute<Accesstoken>(requestToken);
if (responsetoken.IsSuccessful)
{
Accesstoken formToken = responsetoken.Data;
string URLPDFs = appsettings.GetValue<string>("ApiMonsanto:PDFs:URL");
string AuthorizationBear = appsettings.GetValue<string>("ApiMonsanto:PDFs:AuthorizationBear");
string AuthorizationBasic = appsettings.GetValue<string>("ApiMonsanto:PDFs:AuthorizationBasic");
string Accept = appsettings.GetValue<string>("ApiMonsanto:PDFs:Accept");
var clientPDF = new RestClient(URLPDFs);
if (UseProxyApiPDF)
{
clientPDF.Proxy = new WebProxy(ProxyURL,true,new string[] { URLPDFs });
}
var requestPDF = new RestRequest(Method.GET);
requestPDF.AddHeader("Authorization",AuthorizationBasic);
requestPDF.AddHeader("Authorization",AuthorizationBear + formToken.access_token);
requestPDF.AddHeader("Accept",Accept);
IRestResponse responsePDF = clientPDF.Execute(requestPDF);
if (responsePDF.IsSuccessful)
{
Log.information("Conection Successful");
//Log.information(responsePDF.Content);
return Ok();
}
}
当我在部署了应用程序的情况下运行此代码时,我从 responsePDF 中获得状态代码 0 和下一个错误:
连接尝试失败,因为连接方没有 一段时间后正确响应,或建立连接 失败,因为连接的主机未能响应
它触发了一个异常:这是堆栈跟踪:
System.Net.WebException: A connection attempt Failed because the connected party did not properly respond after a period of time,or established connection Failed because connected host has Failed to respond ---> System.Net.Http.HttpRequestException: A connection attempt Failed because the connected party did not properly respond after a period of time,or established connection Failed because connected host has Failed to respond ---> System.Net.sockets.socketException: A connection attempt Failed because the connected party did not properly respond after a period of time,or established connection Failed because connected host has Failed to respond
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,CancellationToken cancellationToken)
at System.Threading.Tasks.ValueTask`1.get_Result()
at System.Net.Http.httpconnectionPool.CreateConnectionAsync(HttpRequestMessage request,CancellationToken cancellationToken)
at System.Threading.Tasks.ValueTask`1.get_Result()
at System.Net.Http.httpconnectionPool.WaitForCreatedConnectionAsync(ValueTask`1 creationTask)
at System.Threading.Tasks.ValueTask`1.get_Result()
at System.Net.Http.httpconnectionPool.SendWithRetryAsync(HttpRequestMessage request,Boolean doRequestAuth,CancellationToken cancellationToken)
at System.Net.Http.httpconnectionPool.EstablishProxyTunnel(CancellationToken cancellationToken)
at System.Threading.Tasks.ValueTask`1.get_Result()
at System.Net.Http.httpconnectionPool.CreateConnectionAsync(HttpRequestMessage request,CancellationToken cancellationToken)
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken)
at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken)
at System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(Task`1 sendTask,HttpRequestMessage request,CancellationTokenSource cts,Boolean disposeCts)
at System.Net.HttpWebRequest.SendRequest()
at System.Net.HttpWebRequest.GetResponse()
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.GetResponse()
at RestSharp.Http.<ExecuteRequest>g__GetRawResponse|190_1(WebRequest request)
at RestSharp.Http.ExecuteRequest(String httpMethod,Action`1 prepareRequest)
究竟是什么导致连接失败?我尝试了没有代理的 API,但 requestPDF 返回 Service Unavailable ,所以我相信我必须使用它。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)