C# gRPC和ASP Net Core:GrpcChannel不支持将SslCredentials与非空参数一起使用
我正在尝试从客户端连接到服务。该服务配置为使用自签名Ssl证书,我正在尝试使用客户端证书配置客户端。我正在使用以下代码:C# gRPC和ASP Net Core:GrpcChannel不支持将SslCredentials与非空参数一起使用,c#,asp.net-core,.net-core,grpc,C#,Asp.net Core,.net Core,Grpc,我正在尝试从客户端连接到服务。该服务配置为使用自签名Ssl证书,我正在尝试使用客户端证书配置客户端。我正在使用以下代码: string cacert = System.IO.File.ReadAllText("certificados/ca.crt"); string cert = System.IO.File.ReadAllText("certificados/client.crt"); string key = System.IO.File.ReadAllText("certificados
string cacert = System.IO.File.ReadAllText("certificados/ca.crt");
string cert = System.IO.File.ReadAllText("certificados/client.crt");
string key = System.IO.File.ReadAllText("certificados/client.key");
KeyCertificatePair keypair = new KeyCertificatePair(cert, key);
SslCredentials sslCreds = new SslCredentials(cacert, keypair);
var channel = GrpcChannel.ForAddress("https://x.x.x.x:5001", new GrpcChannelOptions { Credentials = sslCreds });
var client = new Gestor.GestorClient(channel);
但我得到了以下错误:GrpcChannel不支持将SslCredentials与非null参数一起使用
我不能很好地理解信息错误。SslCredentials是通道凭据吗?类型,并且SslCreds是Grpc.Core.SslCredentials。它可以被编译,所以我猜它的类型是正确的
我想知道的是如何配置客户端以使用我创建的自签名证书
谢谢。仅在可用的grpc dotnet中支持SslCredentials是为了提供与grpc.Core的某种程度的兼容性。在最常见的用例中,它并不公开所有功能。在grpc dotnet中,仅支持使用默认根的SslCredentials parameterless。如果您想提供您的自签名凭据,您当然可以这样做,您需要使用不同的API来配置GrpcChannel: 请参见此处的示例,使用自定义凭据创建GrpcChannel。