NServiceBus easily integrates with ASP.NET Core applications.
Minimal APIs
ASP.NET 6 introduced a new hosting API with the ASP.NET minimal APIs. The NServiceBus.Extensions.Hosting package is fully compatible with the minimal API's WebApplication
host:
var builder = WebApplication.CreateBuilder();
var endpointConfiguration = new EndpointConfiguration("MyWebAppEndpoint");
// configure the endpoint
builder.UseNServiceBus(endpointConfiguration);
var app = builder.Build();
// further ASP.NET configuration
app.Run();
Generic Host
Starting with ASP.NET 3, the NServiceBus Generic Host support provides integration with ASP.NET Core applications:
var builder = WebApplication.CreateBuilder();
var endpointConfiguration = new EndpointConfiguration("MyWebAppEndpoint");
// configure the endpoint
builder.UseNServiceBus(endpointConfiguration);
var app = builder.Build();
// Further ASP.NET configuration
app.Run();
Dependency injection
Messages can be sent with NServiceBus using the IMessageSession
API which is available via the dependency injection container.
Web API controllers
[ApiController]
class WebApiController(IMessageSession messageSession) : ControllerBase
{
[HttpGet]
public async Task<ActionResult> Get()
{
await messageSession.Send(new MessageFromWebApi());
return Ok("message was sent successfully");
}
}
MVC controllers
public class MvcController(IMessageSession messageSession) : Controller
{
public ViewResult Index()
{
return View();
}
public async Task<ViewResult> SendMessage()
{
await messageSession.Send(new MessageFromMvc());
return View();
}
}
Razor Pages
public class RazorPage(IMessageSession messageSession) : PageModel
{
public async Task<IActionResult> OnPostAsync()
{
if (!ModelState.IsValid)
{
return Page();
}
await messageSession.Send(new MessageFromRazorPage());
return RedirectToPage("./Success");
}
}
Older ASP.NET Core versions
For web applications using ASP.NET Core 2.x, the Community.NServiceBus.WebHost community package provides integration with the legacy WebHost.