当前位置: 首页 > 知识库问答 >
问题:

REST API调用失败。NET核心(所有版本),在中工作。NET框架

安奇
2023-03-14

下面的代码正在工作。NET框架(4.5-4.8)。但是它在所有的版本中都失败了。NET Core,其中包含一条消息"收到的消息是意外的或格式错误的"。我已经尝试了所有SSL协议。

我正在使用控制台应用程序和核心应用程序没有任何额外的包。我也在使用相同的操作系统,相同的VS 2019在相同的系统。NET框架和.NET核心。它也与POSTMAN\SOAPUI一起工作。

private static void GetPackage()
        {
            var _clientHandler = new HttpClientHandler();
            _clientHandler.ClientCertificates.Add(GetClientCertificate());

            using (var client = new HttpClient(_clientHandler, true))
            {
                client.BaseAddress = new Uri("<TIBCO URL>");
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", "<token>");
                client.DefaultRequestHeaders.Add("YYYYYYY", "YYYYY");
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                var res = client.GetAsync("<path>");

                try
                {
                    using (var content = res.Result.Content)
                    {
                        var result = content.ReadAsStringAsync();
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.InnerException?.InnerException?.InnerException?.Message); //output of this line is "The message received was unexpected or badly formatted"
                    Console.WriteLine(e.ToString());
                }
            }
        }

        private static X509Certificate2 GetClientCertificate()
        {
            var certFile = Path.Combine(@"C:\<path>", "<Name>");
            X509Certificate2 certificate = new X509Certificate2(certFile, "<passowrd>");
            return certificate;
        }

共有1个答案

姬锐
2023-03-14

我已经将HttpClientHandler类更改为SocketsHttpHandler类。它不工作。NET Core.

https://docs.microsoft.com/en-us/dotnet/api/system.net.http.socketshttphandler?view=net-5.0

 类似资料:
  • 这是我的设置: A: .Net标准版本=2.0(gRPC客户端库) B: .Net Framework版本=4.8(web应用程序-使用客户端库) C: .Net核心版本=3.1(WPF应用程序-使用客户端库) D: .Net核心版本=3.1(gRPC服务器,我自己创建) E: .Net核心版本=3或5-我不确定。(gRPC服务器,生产) 错误="HTTP/2 over TLS未在仅HTTP/2e

  • .NET核心和ASP.NET核心到底有什么区别?

  • 这是.NET framework 4.8---->.NET core 5.0 我有一个个人的国际象棋引擎,我正在工作,昨天我决定从.NET framework切换到.NET Core。 在这个过程中我没有更改1行代码,完全相同的代码。 当我这样做的时候,我注意到损失了几个百分点,在2%到5%之间(目前为止) 这足以看出perft每秒平均有500,000到200,000步的差异(如果你不知道这是什么

  • 我刚起步 (更新:解决方案是将UseRouting移动到/api/error路由下) 但是当时,永远不会调用错误控制器方法。

  • 与这里提到的问题类似,我有一个问题,当运行在.NET Core2.2(在macOS和Windows上)上时,JWT验证可以工作,但在.NET Framework 4.7.2上却无法运行;在那里,它抛出一个异常: Microsoft.IdentityModel.Tokens.SecurityTokenInvalidSignatureException:“IDX10503:签名验证失败。已尝试的密钥:

  • 我向我的.NET核心应用程序添加了一个app.config文件,如下所示 现在我在下面发现了一个错误 消息“无法加载在应用程序配置文件中注册得实体框架提供程序类型'System.Data.Entity.SqlServer.SqlProviderServices、EntityFramework.SqlServer',以固定名称为'System.Data.SqlClient'得ADO.NET提供程序.