问题描述
public static async Task getAndProcessReps(string DUNS,string apikey)
{
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls13 | SecurityProtocolType.Tls12;
string url = string.Format("https://api.sam.gov/entity-information/v2/entities?api_key={1}&ueiDUNS={0}&includeSections=repsAndCerts",DUNS,apikey);
MemoryStream resp = new MemoryStream();
string r = "";
using (WebClient wc = new WebClient())
{
bool retry = true;
int retryCt = 0;
while (retry)
{
try
{
//resp = new MemoryStream(await wc.DownloadDataTaskAsync(new Uri(url)));
r = await wc.DownloadStringTaskAsync(new Uri(url));
retry = false;
}
catch
{
retryCt++;
System.Threading.Thread.Sleep(1000);
if (retryCt > 3)
retry = false;
}
}
}
reps.HomeSAM result = r.CreateFromJsonString<reps.HomeSAM>();
我偶尔但经常收到以下错误返回:
System.Net.Http.HttpRequestException: The SSL connection Could not be establi
shed,see inner exception.
---> System.Security.Authentication.AuthenticationException: Authentication fai
led,see inner exception.
---> System.ComponentModel.Win32Exception (0x80090321): The buffers supplied to
a function was too small.
--- End of inner exception stack trace ---
at System.Net.Security.SslStream.ForceAuthenticationAsync[TIOAdapter](TIOAdap
ter adapter,Boolean receiveFirst,Byte[] reAuthenticationData,Boolean isApm)
at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Boolean asyn
c,Stream stream,SslClientAuthenticationoptions sslOptions,CancellationToken c
ancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Boolean asyn
c,CancellationToken c
ancellationToken)
at System.Net.Http.httpconnectionPool.ConnectAsync(HttpRequestMessage request,Boolean async,CancellationToken cancellationToken)
at System.Net.Http.httpconnectionPool.CreateHttp11ConnectionAsync(HttpRequest
Message request,CancellationToken cancellationToken)
at System.Net.Http.httpconnectionPool.GethttpconnectionAsync(HttpRequestMessa
ge request,CancellationToken cancellationToken)
at System.Net.Http.httpconnectionPool.SendWithRetryAsync(HttpRequestMessage r
equest,Boolean doRequestAuth,CancellationToken cancellationToke
n)
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request,Bool
ean async,CancellationToken cancellationToken)
at System.Net.Http.HttpClient.SendAsyncCore(HttpRequestMessage request,HttpC
ompletionoption completionoption,Boolean emitTelemetryStartStop,CancellationToken cancellationToken)
at System.Net.HttpWebRequest.SendRequest(Boolean async)
at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
我在 Windows Server 2012 R2 上使用 c# Core5。
我在这里做错了什么吗?
我看到了一些关于 Windows 7 与 Windows 10 的讨论,特别是关于这部分错误:
System.ComponentModel.Win32Exception (0x80090321): The buffers supplied to
a function was too small.
这是我的服务器的问题,还是我的代码的问题或端点的问题?
我的错误可能是因为他们不接受 tls1.3?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)