Getting Started
Architecture
Transports
Persistence
ServiceInsight
ServicePulse
ServiceControl
Monitoring
Samples

NServiceBus in ASP.NET

NuGet Package: NServiceBus.Extensions.Hosting (3.x)
Target Version: NServiceBus 9.x

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.

Samples

Related Articles