本文主要是介绍Dynamics 365Online V9.0 OAuth认证后调web api报基础连接已关闭的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在3年前我写过一篇博文,介绍在online环境下如何在服务端使用oAuth身份验证拿到token后调用web api,如果你还没操作过并且感兴趣的可以移步之前的博客,关于Azure中的一些操作的设置已经有些许不同,就懒得再去更新截图了, 如发现和你的实际情况有出入,可以查看博文中链接的docs原文。
今天在做一个POC,使用一个最新的9.1版本的Online拿到Token后去调用web api时,报了个基础连接已经关闭的错,错误见如下截图,这在之前的8.2版本中没碰到过,在online更新了大版本9.0以后也没再经手过online的项目了。
经过一翻gugou后,终于找到了办法,原来是要强制指定安全协议,加上后就ok了
using (HttpClient httpClient = new HttpClient()){
//添加如下的安全协议设置System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;httpClient.Timeout = new TimeSpan(0, 2, 0); // 2 minutes httpClient.DefaultRequestHeaders.Authorization =new AuthenticationHeaderValue("Bearer", access_token);httpClient.DefaultRequestHeaders.Add("OData-MaxVersion", "4.0");httpClient.DefaultRequestHeaders.Add("OData-Version", "4.0");HttpResponseMessage response = httpClient.GetAsync("https://xx.crm5.dynamics.com/api/data/v9.1/accounts?$top=1").Result;returnvalue = response.Content.ReadAsStringAsync().Result;}
参考博文:https://community.dynamics.com/crm/f/microsoft-dynamics-crm-forum/263018/unable-to-read-data-from-the-transport-connection-an-existing-connection-was-forcibly-closed-by-the-remote-host
这篇关于Dynamics 365Online V9.0 OAuth认证后调web api报基础连接已关闭的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!