Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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# .CORE 5 Web Api和客户端MQTT_C#_Mqtt_Webapi - Fatal编程技术网

C# .CORE 5 Web Api和客户端MQTT

C# .CORE 5 Web Api和客户端MQTT,c#,mqtt,webapi,C#,Mqtt,Webapi,是否可以创建.core webapi项目和mqtt客户机? 例如,在startup.cs中创建一个单独的线程,您可以在其中实例化mqtt客户机。我尝试在startup.cs中添加一个单例服务来实例化mqtt客户机,它工作正常,程序接收到主题上发布的消息。 第一个问题,在此位置创建此服务是否正确 问题是当我尝试使用包控制台工具添加数据库的迁移或更新时。 该命令未完成排序,控制台被锁定 public void ConfigureServices(IServiceCollection

是否可以创建.core webapi项目和mqtt客户机?
例如,在startup.cs中创建一个单独的线程,您可以在其中实例化mqtt客户机。我尝试在startup.cs中添加一个单例服务来实例化mqtt客户机,它工作正常,程序接收到主题上发布的消息。 第一个问题,在此位置创建此服务是否正确

问题是当我尝试使用包控制台工具添加数据库的迁移或更新时。 该命令未完成排序,控制台被锁定

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
            services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer("name=ConnectionStrings:DefaultConnection"));
            services.AddSingleton<MyMqtt>(new MyMqtt());
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo { Title = "CoWorkOfficeWebApi", Version = "v1" });
            });
        }

必须先启动服务器,然后才能启动客户端。因此,您希望在API启动后启动客户机。您尝试了哪些,哪些不起作用?
    public class MyMqtt
    {
        MqttClient client;

        public MyMqtt()
        {
            // create client instance 
            client = new MqttClient("127.0.0.1");
            // register to message received 
            client.MqttMsgPublishReceived += client_MqttMsgPublishReceived;
            string clientId = Guid.NewGuid().ToString();
            client.Connect(clientId);
            // subscribe to the topic "/home/temperature" with QoS 2 
            client.Subscribe(new string[] { "/home/temperature" }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE });
        }


        static void client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e)
        {
            string msg = Encoding.UTF8.GetString(e.Message);
            Console.WriteLine($"Topic: {e.Topic}, Message: {msg}");
        }
    }