C# MQTTnet客户端无法连接服务器证书

C# MQTTnet客户端无法连接服务器证书,c#,certificate,client,mqtt,C#,Certificate,Client,Mqtt,我正在使用MQTTnet库连接到需要服务器证书的MQTT服务器。不需要客户端 我已经在我的电脑中安装了证书,正如我在其他帖子中发现的那样,并创建了.pfx文件来创建证书,但程序没有给我任何错误。它根本没有连接到主题 这是我的示例代码 //Create a new MQTT client var factory = new MqttFactory(); var mqttClient = factory.CreateMqttClient();

我正在使用MQTTnet库连接到需要服务器证书的MQTT服务器。不需要客户端

我已经在我的电脑中安装了证书,正如我在其他帖子中发现的那样,并创建了.pfx文件来创建证书,但程序没有给我任何错误。它根本没有连接到主题

这是我的示例代码

        //Create a new MQTT client
        var factory = new MqttFactory();
        var mqttClient = factory.CreateMqttClient();

        var caCert = new X509Certificate(@"C:\caserverroot.pfx", "mypsw");
        var url = "mymqtt.com";
        var username = "user";
        var psw = "user";
        var port = 8885;

        var options = new MqttClientOptionsBuilder()
            .WithClientId(Guid.NewGuid().ToString())
            .WithTcpServer(url, port)
            .WithCredentials(username, psw)
            .WithTls(new MqttClientOptionsBuilderTlsParameters()
            {
                AllowUntrustedCertificates = true,
                UseTls = true,
                Certificates = new List<byte[]> { new X509Certificate2(caCert).Export(X509ContentType.Cert) },
                CertificateValidationCallback = delegate { return true; },
                IgnoreCertificateChainErrors = false,
                IgnoreCertificateRevocationErrors = false
            })
            .WithCleanSession()
            .WithProtocolVersion(MQTTnet.Serializer.MqttProtocolVersion.V311)
            .Build();

        // Connecting
        var result = await mqttClient.ConnectAsync(options);
我在这里发现的其他事件:

你们中有谁对这个图书馆有经验吗?如何调试它并找到错误


谢谢

所以,我不知道为什么我错了,但使用ManagedMqttClient保存了我的情况

这是一个像符咒一样工作的代码

 //Create a new MQTT client
            var mqttClient = new MqttFactory().CreateManagedMqttClient();

            var caCert = new X509Certificate(@"C:\cert.pfx", "psw");
            var url = "myurl.com";
            var username = "user";
            var psw = "user";
            var port = 8885;

            var options = new ManagedMqttClientOptionsBuilder()
                .WithAutoReconnectDelay(TimeSpan.FromSeconds(30))
                .WithClientOptions(new MqttClientOptionsBuilder()
                    .WithClientId(Guid.NewGuid().ToString())
                    .WithTcpServer(url, port)
                    .WithCredentials(username, psw)
                    .WithTls(new MqttClientOptionsBuilderTlsParameters()
                    {
                        AllowUntrustedCertificates = false,
                        UseTls = true,
                        Certificates = new List<byte[]> { new X509Certificate2(caCert).Export(X509ContentType.Cert) },
                        CertificateValidationCallback = delegate { return true; },
                        IgnoreCertificateChainErrors = false,
                        IgnoreCertificateRevocationErrors = false
                    })
                    .WithCleanSession()
                    .WithProtocolVersion(MQTTnet.Serializer.MqttProtocolVersion.V311)
                    .Build())
                .Build();


            // Connecting
            await mqttClient.SubscribeAsync(new TopicFilterBuilder().WithTopic("$share:mygroup:/mytopic").Build());
            await mqttClient.StartAsync(options);

添加证书时出现类型不匹配错误。
 //Create a new MQTT client
            var mqttClient = new MqttFactory().CreateManagedMqttClient();

            var caCert = new X509Certificate(@"C:\cert.pfx", "psw");
            var url = "myurl.com";
            var username = "user";
            var psw = "user";
            var port = 8885;

            var options = new ManagedMqttClientOptionsBuilder()
                .WithAutoReconnectDelay(TimeSpan.FromSeconds(30))
                .WithClientOptions(new MqttClientOptionsBuilder()
                    .WithClientId(Guid.NewGuid().ToString())
                    .WithTcpServer(url, port)
                    .WithCredentials(username, psw)
                    .WithTls(new MqttClientOptionsBuilderTlsParameters()
                    {
                        AllowUntrustedCertificates = false,
                        UseTls = true,
                        Certificates = new List<byte[]> { new X509Certificate2(caCert).Export(X509ContentType.Cert) },
                        CertificateValidationCallback = delegate { return true; },
                        IgnoreCertificateChainErrors = false,
                        IgnoreCertificateRevocationErrors = false
                    })
                    .WithCleanSession()
                    .WithProtocolVersion(MQTTnet.Serializer.MqttProtocolVersion.V311)
                    .Build())
                .Build();


            // Connecting
            await mqttClient.SubscribeAsync(new TopicFilterBuilder().WithTopic("$share:mygroup:/mytopic").Build());
            await mqttClient.StartAsync(options);