Может кто-нибудь объяснить мне разницу между AutomaticRefreshInterval и RefreshInterval, я использую ConfigurationManager в моем OpenIdConnectCachingSecurityTokenProvider, реализующем IIssuerSecurityTokenProvider, по умолчанию AutomaticRefreshInterval установлен на 5 дней, а RefreshInterval - на 30 секунд, между ними я не могу найти четкое объяснение два значения, цель состоит в том, чтобы предотвратить частый повторный запрос метаданных и запрашивать их только через 1 час, например, нормально ли конфигурация по умолчанию или мне нужно изменить RefreshInterval
My OpenIdConnectCachingSecuritytokenProvider class
public class OpenIdConnectCachingSecurityTokenProvider : IIssuerSecurityTokenProvider
{
public ConfigurationManager<OpenIdConnectConfiguration> _configManager;
private string _issuer;
private IEnumerable<SecurityToken> _tokens;
private readonly string _metadataEndpoint;
private readonly ReaderWriterLockSlim _synclock = new ReaderWriterLockSlim();
public OpenIdConnectCachingSecurityTokenProvider(string metadataEndpoint)
{
_metadataEndpoint = metadataEndpoint;
_configManager = new ConfigurationManager<OpenIdConnectConfiguration>(metadataEndpoint);
//_configManager.RefreshInterval = new TimeSpan(0,1,0);
//_configManager.AutomaticRefreshInterval
RetrieveMetadata();
}
/// <summary>
/// Gets the issuer the credentials are for.
/// </summary>
/// <value>
/// The issuer the credentials are for.
/// </value>
public string Issuer
{
get
{
RetrieveMetadata();
_synclock.EnterReadLock();
try
{
return _issuer;
}
finally
{
_synclock.ExitReadLock();
}
}
}
/// <summary>
/// Gets all known security tokens.
/// </summary>
/// <value>
/// All known security tokens.
/// </value>
public IEnumerable<SecurityToken> SecurityTokens
{
get
{
RetrieveMetadata();
_synclock.EnterReadLock();
try
{
return _tokens;
}
finally
{
_synclock.ExitReadLock();
}
}
}
private void RetrieveMetadata()
{
_synclock.EnterWriteLock();
try
{
OpenIdConnectConfiguration config = Task.Run(_configManager.GetConfigurationAsync).Result;
_issuer = config.Issuer;
_tokens = config.SigningTokens;
}
finally
{
_synclock.ExitWriteLock();
}
}
}