如何解决该请求已中止:无法创建SSL / TLS安全通道c#Webrequest
我正在尝试使用c#中的以下代码集来调用服务。 我正在使用.NET Framework 4.6.2。并且每当我到达代码(HttpWebResponse)myHttpWebRequest.GetResponse()时,它就会引发异常“请求已中止:无法创建SSL / TLS安全通道”。我尝试了堆栈溢出中所述的许多解决方案。但它们都不对我有帮助。我从上个星期开始为此苦苦挣扎,然后终于在这里发布了。请任何帮助将不胜感激。 我什至在本地商店中添加了证书,但仍然没有用。下面是我的代码。
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
Uri myUri = new Uri("https://CallingUrl");
WebRequest myWebRequest = HttpWebRequest.Create(myUri);
HttpWebRequest myHttpWebRequest = (HttpWebRequest)myWebRequest;
string svcCredentials = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes("User:Pwd"));
myHttpWebRequest.Headers.Add("Authorization","Basic " + svcCredentials);
myHttpWebRequest.PreAuthenticate = true;
myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
myHttpWebRequest.Method = "POST"
HttpWebResponse httpResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
解决方法
上面的代码非常好。但是此问题是由其他原因引起的。
在深入研究之后,终于找到了解决方案,并认为它可以帮助面临相同问题的其他人,因此发布此答案。
原因:
Schannel 实现中的默认限制为32768字节。一旦达到最大限制,它将在两次服务之间进行握手时返回高于错误的值。
解决方案:
-
使用注册表项将MessageLimitClient从默认0x8000增加到最大0xf000 HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ SecurityProviders \ Schannel \ 消息传递
-
创建消息键(如果不存在)
-
然后创建新的DWORD,将其命名为“ MessageLimitClient ”,并将Valuedata设置为“ f000 ”(十六进制)。
-
更改此值后,重新启动服务器以使新值生效。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。