MacOS 上的 DotNet core 2.0 在使用 couchbase dotnet sdk 时获取由 httpclient 触发的 libcurl 和 ssl 错误
DotNet core 2.0 on MacOS gets libcurl and ssl error triggered by httpclient when using couchbase dotnet sdk
我正在开发一个 Dotnet 核心 2.x(实际使用 2.1.4,我写这篇文章时的最新版本)web api 项目,以便使用 couchbase 作为我的数据库服务器,我需要使用 couchbase SDK。 sdk 声明它支持 DotNet 核心 2.x.
经过非常基本的设置后,我只想测试连接性,但我不断收到此错误。
HttpRequestException: The handler does not support custom handling of certificates with this combination of libcurl (7.54.0) and its SSL backend ("LibreSSL/2.0.20").
我以为这是couchbase SDK的问题,但经过一番研究,我发现它与macOS内置的openssl和curl不支持某些行为有关。以下是一些参考:
.NET Core, OSX, libcurl, and OpenSSL
Couchbase dotnet SDK OSX libcurl error
经过更多研究,事实证明 dotnet core 2.0 不应再遭受 MacOS 相关问题的困扰...但为什么我仍然遇到这个问题?
是否有任何解决方法,例如告诉 HttpClient 使用 brew 版本的 curl?
使用套接字 HTTP 处理程序的步骤
这是我需要做的才能让它工作:
- 安装 .NET Core SDK 2.1.xxx-preview
- 更新项目
AspNetCore.All
参考
- 将包源添加到
NuGet.Config
- 设置环境变量
安装 .NET Core SDK [2.1.xxx-preview]
下载并安装macOs installer
更新项目AspNetCore.All
参考
更新包参考:
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.1.0-preview1-final" />
将包源添加到 NuGet.Config
更新 ~/.nuget/NuGet/NuGet.Config
并添加另一个包源:
<add key="dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" />
我需要这样做,因为我遇到了 NuGet 错误:
error NU1102: Unable to find package Microsoft.AspNetCore.All with version (>= 2.1.0)
.
设置环境变量
在我的Startup.cs
中我设置了一个环境变量:
Environment.SetEnvironmentVariable("DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER", "true");
我们在做什么
dotnet 2.1 将包含自己的套接字处理程序,绕过 OS 特定的处理程序,因此我们可以避免 macOS 问题。在 preview-1 中,我们仍然需要手动 opt-in:
https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/HttpClientHandler.cs
但很快在 preview-2 中它将默认打开:
https://github.com/dotnet/corefx/pull/27821
上一个post
今天早上我一直在调查同样的问题,目前我认为没有明确的解决方案。 Dotnet Core 2.x 没有解决 Couchbase SDK 的问题,尽管我认为在 Couchbase 之外使用 HttpClient
很好(还没有测试过)。
截至 Couchbase SDK 版本 2.5.8(2018 年 3 月 17 日),这仍然是一个已知问题:
https://developer.couchbase.com/server/other-products/release-notes-archives/dotnet-sdk
实际问题link:
https://issues.couchbase.com/browse/NCBC-1296
在论坛中,请参阅:
- https://forums.couchbase.com/t/couchbase-dotnet-sdk-osx-libcurl-error/12238
- https://forums.couchbase.com/t/platformnotsupportedexception-when-querying-from-net-core-2-0-on-macos/15490/6
如果我找到可行的解决方案,我会post回来。
我正在开发一个 Dotnet 核心 2.x(实际使用 2.1.4,我写这篇文章时的最新版本)web api 项目,以便使用 couchbase 作为我的数据库服务器,我需要使用 couchbase SDK。 sdk 声明它支持 DotNet 核心 2.x.
经过非常基本的设置后,我只想测试连接性,但我不断收到此错误。
HttpRequestException: The handler does not support custom handling of certificates with this combination of libcurl (7.54.0) and its SSL backend ("LibreSSL/2.0.20").
我以为这是couchbase SDK的问题,但经过一番研究,我发现它与macOS内置的openssl和curl不支持某些行为有关。以下是一些参考:
.NET Core, OSX, libcurl, and OpenSSL
Couchbase dotnet SDK OSX libcurl error
经过更多研究,事实证明 dotnet core 2.0 不应再遭受 MacOS 相关问题的困扰...但为什么我仍然遇到这个问题?
是否有任何解决方法,例如告诉 HttpClient 使用 brew 版本的 curl?
使用套接字 HTTP 处理程序的步骤
这是我需要做的才能让它工作:
- 安装 .NET Core SDK 2.1.xxx-preview
- 更新项目
AspNetCore.All
参考 - 将包源添加到
NuGet.Config
- 设置环境变量
安装 .NET Core SDK [2.1.xxx-preview]
下载并安装macOs installer
更新项目AspNetCore.All
参考
更新包参考:
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.1.0-preview1-final" />
将包源添加到 NuGet.Config
更新 ~/.nuget/NuGet/NuGet.Config
并添加另一个包源:
<add key="dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" />
我需要这样做,因为我遇到了 NuGet 错误:
error NU1102: Unable to find package Microsoft.AspNetCore.All with version (>= 2.1.0)
.
设置环境变量
在我的Startup.cs
中我设置了一个环境变量:
Environment.SetEnvironmentVariable("DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER", "true");
我们在做什么
dotnet 2.1 将包含自己的套接字处理程序,绕过 OS 特定的处理程序,因此我们可以避免 macOS 问题。在 preview-1 中,我们仍然需要手动 opt-in: https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/HttpClientHandler.cs
但很快在 preview-2 中它将默认打开: https://github.com/dotnet/corefx/pull/27821
上一个post
今天早上我一直在调查同样的问题,目前我认为没有明确的解决方案。 Dotnet Core 2.x 没有解决 Couchbase SDK 的问题,尽管我认为在 Couchbase 之外使用 HttpClient
很好(还没有测试过)。
截至 Couchbase SDK 版本 2.5.8(2018 年 3 月 17 日),这仍然是一个已知问题: https://developer.couchbase.com/server/other-products/release-notes-archives/dotnet-sdk
实际问题link: https://issues.couchbase.com/browse/NCBC-1296
在论坛中,请参阅:
- https://forums.couchbase.com/t/couchbase-dotnet-sdk-osx-libcurl-error/12238
- https://forums.couchbase.com/t/platformnotsupportedexception-when-querying-from-net-core-2-0-on-macos/15490/6
如果我找到可行的解决方案,我会post回来。