Я работаю над приложением Blazor WebAssembly и создал DelegatingHandler под названием MyJWTHttpHandler для прикрепления токена JWT к исходящим HTTP-запросам. Однако я столкнулся с проблемой, когда обработчик не выполняется по первому запросу, пока я не обновлю страницу. После обновления обработчик работает как положено.
Вот реализация моего обработчика:
public class MyJWTHttpHandler : DelegatingHandler
{
private readonly ISessionStorageService _sessionStorage;
public MyJWTHttpHandler(ISessionStorageService sessionStorage) : base()
{
_sessionStorage = sessionStorage;
}
protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
try
{
Console.Error.WriteLine("Sending Request");
var token = await _sessionStorage.ReadEncryptedItemAsync("Token");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token?.ToString());
return await base.SendAsync(request, cancellationToken);
}
catch (Exception ex)
{
Console.Error.WriteLine($"Error Sending Request: {ex.Message}");
return await base.SendAsync(request, cancellationToken);
}
}
}
А вот как я регистрирую обработчик в Program.cs:
builder.Services.AddTransient();
builder.Services.AddHttpClient("BaseUrl", client =>
{
client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
}).AddHttpMessageHandler();
Подробнее здесь: https://stackoverflow.com/questions/790 ... st-request
Почему DelegatingHandler не выполняется по первому запросу? ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Частные переменные внутри DelegatingHandler, смешивающие значения из других запросов
Anonymous » » в форуме C# - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-