dotnet / dotnet/aspnetcore

Add a `cancellationToken` for `WebApplication.RunAsync`

Open
#50,042 7 comments 3 reactions 0 assignees View on GitHub
api-suggestion area-networking
Dominant language
C#
Stars
38.4k
Forks
10.9k
Avg merge
2d 6h
Merged PRs (30d)
290

Description

## Background and Motivation

Currently, the `WebApplication.RunAsync` does not have a `CancellationToken` parameter, think we should have a `CancellationToken` to forward it to the inner `Host`.

Similar issue: https://github.com/dotnet/aspnetcore/issues/44083

## Proposed API

```diff
namespace Microsoft.AspNetCore.Builder;

public sealed class WebApplication
{
public Task RunAsync([StringSyntax("Uri")] string? url = null);
+ public Task RunAsync([StringSyntax("Uri")] string url, CancenllationToken cancellationToken);
}
```

## Usage Examples

```csharp
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5));
var builder = WebApplication.CreateSlimBuilder();
var app = builder.Build();
await app.RunAsync("http://localhost:5000", cts.Token);
```

## Alternative Designs

``` diff
- public Task RunAsync([StringSyntax("Uri")] string? url = null);
+ public Task RunAsync([StringSyntax("Uri")] string? url = null, CancenllationToken cancellationToken = default);
```

## Risks

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.