gpt4 book ai didi

c# - 使用 Web 客户端的 HTTP 请求。随机错误(验证失败,因为对方已关闭传输流。)

转载 作者:行者123 更新时间:2023-12-03 08:25:09 27 4
gpt4 key购买 nike

嘿,你好,我正在使用带有 Umbraco 的 MVC 使用 atm,并且我正在尝试使用 webclient http 协议(protocol)进行 API 调用。

这是我正在做的请求。

[HttpPost]
public JObject CheckAuth()
{

string URI = "https://nedfinity.api.accelo.com/oauth2/v0/token";
string myParameters = "grant_type=client_credentials&scope=read(all)";

var clientId = "this is a secret";
var clientSecret = "this is a secret";

var byteArray = new UTF8Encoding().GetBytes(clientId + ":" + clientSecret);

using (WebClient wc = new WebClient())
{
wc.UseDefaultCredentials = true;
wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
wc.Headers[HttpRequestHeader.Authorization] = "Basic " + Convert.ToBase64String(byteArray);
string HtmlResult = wc.UploadString(URI, myParameters);
JObject json = JObject.Parse(HtmlResult);
return json;
}
}

它过去一直工作得很好,但是当我编辑 CSS 时它突然停止工作。我试图扭转我在 bitbucket 中的所有提交,但没有修复。
此外,当尝试从 accelo 调用 api 时,它的工作正常。
这是我从服务器获得的唯一反馈:
data
:
Object
ExceptionMessage
:
"Verification failed because the other party has closed the transport stream."
ExceptionType
:
"System.IO.IOException"
Message
:
"An error has occurred."
StackTrace
:
" bij System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
↵ bij System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
↵ bij System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
↵ bij System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
↵ bij System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
↵ bij System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)
↵ bij System.Net.TlsStream.CallProcessAuthentication(Object state)
↵ bij System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
↵ bij System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
↵ bij System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
↵ bij System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result)
↵ bij System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size)
↵ bij System.Net.PooledStream.Write(Byte[] buffer, Int32 offset, Int32 size)
↵ bij System.Net.ConnectStream.WriteHeaders(Boolean async)"

任何人都知道什么会导致这个问题以及如何解决它或在哪里寻找?

我在想我自己这与一些配置设置或网络权限有关,但它在本地主机上,我在这段时间没有更改任何可能导致这种情况的东西。

附言我希望这种提出问题的正确方法是否做错了,请随时指出我。

最佳答案

您可以尝试将安全协议(protocol)设置为以下内容:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12

大多数 API 现在使用 TLS12 作为默认协议(protocol)。

让我知道事情的后续。

PS。您可以在现有的方法 block 中添加它。

问候

克雷格

关于c# - 使用 Web 客户端的 HTTP 请求。随机错误(验证失败,因为对方已关闭传输流。),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44196591/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com