Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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# 随机出现的各种错误_C#_Wpf_Https_Azure Active Directory_Webapi - Fatal编程技术网

C# 随机出现的各种错误

C# 随机出现的各种错误,c#,wpf,https,azure-active-directory,webapi,C#,Wpf,Https,Azure Active Directory,Webapi,我决定修改这个问题,因为在经历了几个小时的挫折之后,这是一项急件。 向所有浪费时间的人道歉 拓扑结构: 两种不同的应用。 1.WPF应用程序C#。包括DevExpress工具、信号器、web api的自动测试实现。ADAL认证。 2.驻留在Azure上的Webapi ASP.NET,最近升级到.NET版本4.6.1(发布错误)。我还通过标题使用版本控制。 3.Azure SQL Server作为后端。最近将DTU(内存、CPU等)从10升级到20。(发布错误) 该系统已经成功运行了大约三年,在此

我决定修改这个问题,因为在经历了几个小时的挫折之后,这是一项急件。 向所有浪费时间的人道歉

拓扑结构: 两种不同的应用。 1.WPF应用程序C#。包括DevExpress工具、信号器、web api的自动测试实现。ADAL认证。 2.驻留在Azure上的Webapi ASP.NET,最近升级到.NET版本4.6.1(发布错误)。我还通过标题使用版本控制。 3.Azure SQL Server作为后端。最近将DTU(内存、CPU等)从10升级到20。(发布错误)

该系统已经成功运行了大约三年,在此期间进行了大量的开发工作

在几天没有发布之后,周一早上就到了,错误开始出现。 我通过NLog将所有错误记录到SQL Server

第一个错误:(到目前为止我得到的最多)

然后我开始看到

System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.
at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)
--- End of inner exception stack trace ---
此错误不太常见,但昨天发生了8次

我也看到了这个错误,今天我开始认为这可能是罪魁祸首。我将密切关注我的ADAL电话,虽然这一直运作良好

Microsoft.Rest.HttpOperationException: Operation returned an invalid status code 'Unauthorized'
错误随机出现,您可以绕过它们,系统将继续工作。通常需要刷新数据

此后,我从一个我知道是稳定的早期版本重建了api,并添加了此后创建的几个调用。 我昨天重新构建了WPF应用程序,然后得到了相同的结果

所以我开始认为这是Azure上的基础设施

我升级了SQL Server上的DTU(这是最需要的)

我将API web服务计划升级到下一个级别

我通过Azure将api上的最小TLS设置为1.2。api代码没有变化,我只是不知道TLS是如何工作的

我现在在azure上运行应用程序洞察,以查看web api是如何运行的,并查看是否可以发现任何东西

今天早上我仍然看到错误。
这是漫长的一周

大多数情况下,我都非常粗略地调试这些问题。在运行应用程序的服务器上打开浏览器。转到您正在访问的url。评估url的锁定/不受信任部分,并查看所提供的证书。98%的时间都是需要的。对另外2%的人来说,Wireshark是你的朋友。它将显示TLS谈判的细节。您的服务器和远程服务器可能没有共同的密码,您可以在日志中看到这一点。您还可以使用nmap从远程服务器获取密码列表,并与注册表中启用的密码进行比较

我将根据您提到的错误尝试帮助您。我也犯了同样的错误:

发送请求时出错。--> System.Net.WebException:请求已中止:无法创建 SSL/TLS安全通道

考虑到您没有提供代码,我无法确定这是否是同一问题,但基于错误,我建议尝试以下操作:

在您的
Global.asax
文件中,直接在
应用程序\u Start
方法中添加以下行:

ServicePointManager.SecurityProtocol=
((IEnumerable)配置管理器
.AppSettings[“SecurityProtocol”]
.Split(“,”)
.Select(a=>(SecurityProtocolType)Enum.Parse(typeof(SecurityProtocolType),a)))
.聚合(0,(当前,项目)=>当前|(SecurityProtocolType)项目);
在您的
Web.config
中:


我感觉这是tls不匹配的问题。可能其中一个系统开始需要tls 1.2,而您的应用程序没有发送它。 您没有非常明确地说明错误的来源,是在您的webapi和sql db之间,还是在wpf和webapi之间

假设它在wpf和webapi之间, 打开一个powershell, 类型[Net.ServicePointManager]::SecurityProtocol 然后看看你在那里看到了什么, 然后在powershell中运行,这将为4.7以下的.net版本设置默认值,以始终强制tls1.2连接

Set-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord
然后重新启动powershell并再次执行[Net.ServicePointManager]::SecurityProtocol,以确保其中也显示Tls12


或者在代码中手动设置,但我会首先在wpf端计算机上运行该设置,以测试这是否是问题所在

你读了吗?谢谢你。我没见过这个。正在查看。您是否在wpf应用程序中使用https并通过postman测试https呼叫?如果启用了http,您可以检查http是否正常工作吗?看起来根本不是竞争条件。只是需要一次调试一个的正常错误。如果无法解决问题,请为每个问题创建一个单独的问题,并为每个问题创建一个专用的问题。无法创建SSL/TLS安全通道意味着您的服务器无法建立TLS连接。很可能是与您交谈的服务器证书有问题。它可能是自签名的,它可能缺少指向受信任根的完整证书链,或者它可能使用不受信任的根。该死,我本想添加另一条评论,但现在似乎无法删除。谢谢。我明天会查出来的。此webapi位于Azure上。我可以在Azure上设置TLS 1.2。我明天退房,然后回来报到。我真的很感谢你的帮助。我知道这个问题没有很好的计划,但我花了三个漫长的日日夜夜来处理它,结果遇到了麻烦。当然我们都去过。谢谢我现在看到的主要错误是我发布的第二个错误。解密操作失败。明天我会更详细地讨论,并更新问题。不用担心,我稍后会检查更新的版本。我希望我能帮助你。关于发生的事情有什么最新的信息吗?我的代码解决了你的问题吗?100%相关。我将写一篇关于我所经历的作为回答的文章,希望能帮助其他人。谢谢你的帮助。
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord