Прямые вызовы httpclient работают правильно (без кэширования) < /li>
Запросы почтальона работают правильно < /li>
перезапуск приложения и вызов realmsall () < /code> Возвращает правильный ответ < /li>
< /ul>
. В РЕКИТ, а не на стороне сервера.
Такая же проблема возникает в методе Clientsall3 () .
Код: Выделить всё
[Headers("Accept: application/json")]
[Get("/admin/realms")]
Task RealmsAll([Query] bool? briefRepresentation);
Код: Выделить всё
services.AddTransient();
var refitSettings = new RefitSettings
{
ContentSerializer = new SystemTextJsonContentSerializer(new JsonSerializerOptions
{
PropertyNameCaseInsensitive = false,
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull
})
};
services.AddRefitClient(refitSettings)
.AddHttpMessageHandler()
.AddHttpMessageHandler()
.ConfigureHttpClient((serviceProvider, config) =>
{
var keycloakOptions = serviceProvider.GetRequiredService();
config.BaseAddress = new Uri(keycloakOptions.Value.Url);
config.DefaultRequestHeaders.CacheControl = new CacheControlHeaderValue
{
NoCache = true,
NoStore = true,
MustRevalidate = true,
MaxAge = TimeSpan.Zero
};
config.DefaultRequestHeaders.Pragma.ParseAdd("no-cache");
});
public class NoCacheHandler : DelegatingHandler
{
protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
// Add no-cache headers
request.Headers.Add("Cache-Control", "no-cache, no-store, must-revalidate");
request.Headers.Add("Pragma", "no-cache");
// Add unique timestamp to URL
var uriBuilder = new UriBuilder(request.RequestUri);
var query = System.Web.HttpUtility.ParseQueryString(uriBuilder.Query);
query["_t"] = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
uriBuilder.Query = query.ToString();
request.RequestUri = uriBuilder.Uri;
var response = await base.SendAsync(request, cancellationToken);
// Clear response cache headers
response.Headers.Remove("ETag");
response.Headers.CacheControl = new System.Net.Http.Headers.CacheControlHeaderValue
{
NoCache = true,
NoStore = true,
MustRevalidate = true
};
return response;
}
}
< /code>
что я попробовал < /strong>
Добавлено контроль кэша: без кэша, без магазина, необходимо-ревалидатные заголовки
Добавлены Pragma: no-cache Заголовки
Добавлены уникальные временные параметры для каждого запроса
emerced atagers
conifulant http-http-htt /> Используется пользовательский httpmessagehandler для изменения запросов /ответов
set connectionClose = false и другие конфигурации httpclient < /p>
Я попытался отключить кэширование на стороне клиента при ремонте. Также попробовал httpclient. Refit не сработал, как и ожидалось, но httpclient сделал.>
Подробнее здесь: https://stackoverflow.com/questions/797 ... pmessageha
Мобильная версия