This IoTSharp-maintained fork keeps the original controller-style API and adds a broader MQTT MVC model. Existing applications can migrate in layers.
Existing [MqttController], [MqttRoute], MqttBaseController, Ok(), and BadMessage() usage remains supported.
Move from assembly scanning:
services.AddMqttControllers();To explicit registration:
services.AddMqttControllers<MyController>();This improves startup diagnostics and is the recommended trimming path.
Legacy [FromPayload] remains supported. New code can use [FromMqttPayload], [FromMqttRoute], [FromMqttClient], [FromMqttUserProperty], [FromMqttSession], and [FromMqttContext].
Legacy controller helpers still work. New action code can return MqttResult, Task<MqttResult>, or a payload type.
public MqttResult Command(CommandPayload payload)
{
return Suppress();
}Use MqttRouteCatalog and MQTTnet.AspNetCore.Routing.Testing to lock down topic contracts owned by the consuming application.