{"record":{"id":"a46092f8b7e27ded","repo":"dotnetcore/CAP","slug":"you-must-be-config-transport-provider-for-cap-eg-services","errorCode":null,"errorMessage":"You must be config transport provider for CAP!\n==================================================================================\n========   eg: services.AddCap( options => { options.UseRabbitMQ(...) }); ========\n==================================================================================","messagePattern":"You must be config transport provider for CAP!\n==================================================================================\n========   eg: services\\.AddCap\\( options => (.+?)\\); ========\n==================================================================================","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"src/DotNetCore.CAP/Internal/IBootstrapper.Default.cs","lineNumber":136,"sourceCode":"    }\n\n    public override async Task StopAsync(CancellationToken cancellationToken)\n    {\n        _cts?.Cancel();\n\n        await base.StopAsync(cancellationToken).ConfigureAwait(false);\n    }\n\n    private void CheckRequirement()\n    {\n        var marker = _serviceProvider.GetService<CapMarkerService>();\n        if (marker == null)\n            throw new InvalidOperationException(\n                \"AddCap() must be added on the service collection.   eg: services.AddCap(...)\");\n\n        var messageQueueMarker = _serviceProvider.GetService<CapMessageQueueMakerService>();\n        if (messageQueueMarker == null)\n            throw new InvalidOperationException(\n                \"You must be config transport provider for CAP!\" + Environment.NewLine +\n                \"==================================================================================\" +\n                Environment.NewLine +\n                \"========   eg: services.AddCap( options => { options.UseRabbitMQ(...) }); ========\" +\n                Environment.NewLine +\n                \"==================================================================================\");\n\n        var databaseMarker = _serviceProvider.GetService<CapStorageMarkerService>();\n        if (databaseMarker == null)\n            throw new InvalidOperationException(\n                \"You must be config storage provider for CAP!\" + Environment.NewLine +\n                \"===================================================================================\" +\n                Environment.NewLine +\n                \"========   eg: services.AddCap( options => { options.UseSqlServer(...) }); ========\" +\n                Environment.NewLine +\n                \"===================================================================================\");\n    }\n","sourceCodeStart":118,"sourceCodeEnd":154,"githubUrl":"https://github.com/dotnetcore/CAP/blob/e52b8508e54cdb7a9ce7f9fec03d9ea8ad2710fb/src/DotNetCore.CAP/Internal/IBootstrapper.Default.cs#L118-L154","documentation":"Error \"You must be config transport provider for CAP!\n==================================================================================\n========   eg: services.AddCap( options => { options.UseRabbitMQ(...) }); ========\n==================================================================================\" thrown in dotnetcore/CAP.","triggerScenarios":"Thrown at src/DotNetCore.CAP/Internal/IBootstrapper.Default.cs:136 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Configure a message transport in AddCAP, e.g. services.AddCAP(options => { options.UseRabbitMQ(\"localhost\"); }); (or UseKafka/UseAzureServiceBus/etc.).","Ensure the transport extension package (e.g. DotNetCore.CAP.RabbitMQ) is installed and the corresponding Use* method is called inside the AddCAP options lambda."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"e52b8508e54cdb7a9ce7f9fec03d9ea8ad2710fb","analyzedAt":"2026-09-14T14:46:34.677Z","contentChangedAt":"2026-09-14T14:46:34.677Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}