dotnet / dotnet/aspnetcore

Allow async method for HeaderPropagationOptions.ValueFilter

Open
#63,760 5 comments 0 reactions 0 assignees View on GitHub
api-suggestion area-middleware
Dominant language
C#
Stars
38.4k
Forks
10.9k
Avg merge
2d 6h
Merged PRs (30d)
290

Description

## Background and Motivation

Consider following code:

``` csharp

builder.Services.AddHttpClient()
.AddHeaderPropagation(options =>
{
options.Headers.Add("Authorization", context =>
{
// await here
var access_token = context.HttpContext.GetTokenAsync("access_token").GetAwaiter().GetResult();

return access_token ?? StringValues.Empty;
});
});

```
## Proposed API

Add property `AsyncValueFilter` for HeaderPropagationEntry.

```diff
namespace Microsoft.AspNetCore.HeaderPropagation;

public class HeaderPropagationEntry
{
+ public Func>? AsyncValueFilter { get; }
}

public sealed class HeaderPropagationEntryCollection : Collection
{
+ public void Add(string headerName, Func> valueFilter);
}
```

## Usage Examples

```csharp
builder.Services.AddHttpClient()
.AddHeaderPropagation(options =>
{
options.Headers.Add("Authorization", async context =>
{
// await here
var access_token = await context.HttpContext.GetTokenAsync("access_token");

return access_token ?? StringValues.Empty;
});
});
```

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.