Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.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# gRPC和ASP Net Core:GrpcChannel不支持将SslCredentials与非空参数一起使用_C#_Asp.net Core_.net Core_Grpc - Fatal编程技术网

C# gRPC和ASP Net Core:GrpcChannel不支持将SslCredentials与非空参数一起使用

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

我正在尝试从客户端连接到服务。该服务配置为使用自签名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/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。