c# - HTTPS 调用异常“由于意外的数据包格式,握手失败。”
问题描述
从 Windows 服务进行 REST api 调用(使用 https 方案)时,我收到异常,指出“由于意外的数据包格式,握手失败。”。将域用户分配为服务登录帐户后,上述异常就会消失。
此外,在开发阶段(Visual Studio 2015,C#)我没有遇到任何异常。
***Code Snippet:***
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
HttpClient Client = new HttpClient();
var response = await Client.PostAsync("https://auth.brivo.com/oauth/token", httpContent, cancellationToken).ConfigureAwait(false);
***Exception Thrown:***
System.Net.Http.HttpRequestException occurred
HResult=-2146233088
Message=An error occurred while sending the request.
Source=mscorlib
StackTrace:
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
at Sisco.FastPass.AccessControl.Brivo.HttpClientHelper.<PostFormDataRequest>d__5`2.MoveNext()
InnerException:
HResult=-2146233079
Message=The underlying connection was closed: An unexpected error occurred on a send.
Source=System
StackTrace:
at System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult, TransportContext& context)
at System.Net.Http.HttpClientHandler.GetRequestStreamCallback(IAsyncResult ar)
InnerException:
HResult=-2146232800
Message=**The handshake failed due to an unexpected packet format.**
Source=System
StackTrace:
at System.Net.TlsStream.EndWrite(IAsyncResult asyncResult)
at System.Net.PooledStream.EndWrite(IAsyncResult asyncResult)
at System.Net.ConnectStream.WriteHeadersCallback(IAsyncResult ar)
InnerException:
解决方案
请参考以下链接并检查启用 ssl 协议部分: https ://www.limilabs.com/blog/the-handshake-failed-due-to-an-unexpected-packet-format