Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 条带支付:System.Net.WebException:请求已中止:无法创建SSL/TLS安全通道_C#_.net_Ssl_Stripe Payments_Webapi - Fatal编程技术网

C# 条带支付:System.Net.WebException:请求已中止:无法创建SSL/TLS安全通道

C# 条带支付:System.Net.WebException:请求已中止:无法创建SSL/TLS安全通道,c#,.net,ssl,stripe-payments,webapi,C#,.net,Ssl,Stripe Payments,Webapi,我在WebAPI 2.0中使用C#rest API;生成此异常的请求很少。查找以下详细信息: .net版本:4.0 Stripe.net版本:34.20.0.0 异常日志: 2020-02-18 06:47:45.4533|DEBUG|Services.impl.StripePaymentChargeService|System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel

我在WebAPI 2.0中使用C#rest API;生成此异常的请求很少。查找以下详细信息:

.net版本:4.0 Stripe.net版本:34.20.0.0 异常日志:

2020-02-18 06:47:45.4533|DEBUG|Services.impl.StripePaymentChargeService|System.Net.WebException: The 

request was aborted: Could not create SSL/TLS secure channel.
   at System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult, TransportContext& context)
   at System.Net.Http.HttpClientHandler.GetRequestStreamCallback(IAsyncResult ar)
2020-02-18 06:47:45.4533|DEBUG|Services.impl.StripePaymentChargeService|   at Stripe.SystemNetHttpClient.<MakeRequestAsync>d__21.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Stripe.StripeClient.<RequestAsync>d__25`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Stripe.Service`1.<RequestAsync>d__24`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   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 Stripe.Service`1.Request[T](HttpMethod method, String path, BaseOptions options, RequestOptions requestOptions)
   at Stripe.ChargeService.Create(ChargeCreateOptions options, RequestOptions requestOptions)
条带创建费用代码:

 stripeCharge = chargeService.Create(myCharge);
由于生产依赖关系,我无法升级.net版本。
任何帮助都将不胜感激。

我想你这里有解决方案,不是投票的答案,而是下面的答案:

基本上,您应该在应用程序启动时添加这一行,并确保.net4.5安装在目标计算机上:

ServicePointManager.SecurityProtocol=(SecurityProtocolType)768 |(SecurityProtocolType)3072


*条带支付网关仅支持TLS 1.1和TLS 1.2。

如果您的操作系统很旧,并且不支持TLS,则您也必须升级操作系统。 然后代码应该升级到.net 4.5或更高版本。 如果您无法将.net framework升级到4.5,我将为您提供更复杂的解决方案。 使用自包含部署将代码转换为ASp.net核心。

创建一个.net核心解决方案,该解决方案可以在其发布自包含容器中运行。

因此,您有一个没有.NET4.5的操作系统的.NET4.5解决方案。 出版独立的 将应用程序发布为自包含会生成特定于平台的可执行文件。输出发布文件夹包含应用程序的所有组件,包括.NET核心库和目标运行时。该应用程序与其他.NET核心应用程序隔离,不使用本地安装的共享运行时。应用程序的用户无需下载并安装.NET Core

为指定的目标平台生成可执行二进制文件。例如,如果您有一个名为word_reader的应用程序,并且您发布了一个用于Windows的自包含可执行文件,则会创建一个word_reader.exe文件。发布Linux或macOS时,将创建word_读取器文件。目标平台和体系结构是使用dotnet publish命令的-r参数指定的。有关RID的详细信息,请参见.NET Core RID目录


如果应用程序具有特定于平台的依赖项,例如包含特定于平台的依赖项的NuGet软件包,这些依赖项将与应用程序一起复制到发布文件夹。

可能会有所帮助?@karllekko感谢您的评论,我没有编辑注册表的权限,必须在不升级的情况下找到解决方案。谢谢您的回答。正如问题中提到的,我已经试过了。我无法升级问题中提到的.net版本。哦,我的理解是您无法升级VS解决方案的目标版本…但我认为您没有解决方法,因为.net 4.0不支持TLS 1.1或1.2。因此,您唯一的选择是在目标计算机上升级到.NET 4.5。。。
 stripeCharge = chargeService.Create(myCharge);