diff --git a/src/Microsoft.IdentityModel.Protocols/Configuration/ConfigurationManager.cs b/src/Microsoft.IdentityModel.Protocols/Configuration/ConfigurationManager.cs index 1f38022f33..ed3d4b7e67 100644 --- a/src/Microsoft.IdentityModel.Protocols/Configuration/ConfigurationManager.cs +++ b/src/Microsoft.IdentityModel.Protocols/Configuration/ConfigurationManager.cs @@ -316,7 +316,7 @@ public override void RequestRefresh() _isFirstRefreshRequest = false; if (Interlocked.CompareExchange(ref _configurationRetrieverState, ConfigurationRetrieverRunning, ConfigurationRetrieverIdle) == ConfigurationRetrieverIdle) { - _ = Task.Run(UpdateCurrentConfiguration, CancellationToken.None); + UpdateCurrentConfiguration(); _lastRequestRefresh = now; } } diff --git a/test/Microsoft.IdentityModel.Protocols.OpenIdConnect.Tests/ConfigurationManagerTests.cs b/test/Microsoft.IdentityModel.Protocols.OpenIdConnect.Tests/ConfigurationManagerTests.cs index 83d7f5d69c..2fba523106 100644 --- a/test/Microsoft.IdentityModel.Protocols.OpenIdConnect.Tests/ConfigurationManagerTests.cs +++ b/test/Microsoft.IdentityModel.Protocols.OpenIdConnect.Tests/ConfigurationManagerTests.cs @@ -230,7 +230,7 @@ public async Task VerifyInterlockGuardForRequestRefresh() // Interlocked guard will block. // Configuration should be AADCommonV1Config signalEvent.Reset(); - configurationManager.RequestRefresh(); + _ = Task.Run(() => configurationManager.RequestRefresh()); // InMemoryDocumentRetrieverWithEvents will signal when it is OK to change the MetadataAddress // otherwise, it may be the case that the MetadataAddress is changed before the previous Task has finished. @@ -239,7 +239,7 @@ public async Task VerifyInterlockGuardForRequestRefresh() // AADCommonV1Json would have been passed to the the previous retriever, which is blocked on an event. configurationManager.MetadataAddress = "AADCommonV2Json"; TestUtilities.SetField(configurationManager, "_lastRequestRefresh", DateTimeOffset.MinValue); - configurationManager.RequestRefresh(); + _ = Task.Run(() => configurationManager.RequestRefresh()); // Set the event to release the lock and let the previous retriever finish. waitEvent.Set(); @@ -658,14 +658,13 @@ public async Task GetConfigurationAsync() var configuration = await configManager.GetConfigurationAsync(CancellationToken.None); TestUtilities.SetField(configManager, "_lastRequestRefresh", DateTimeOffset.UtcNow - TimeSpan.FromHours(1)); - configManager.RequestRefresh(); configManager.MetadataAddress = "http://127.0.0.1"; + configManager.RequestRefresh(); var configuration2 = await configManager.GetConfigurationAsync(CancellationToken.None); IdentityComparer.AreEqual(configuration, configuration2, context); if (!object.ReferenceEquals(configuration, configuration2)) context.Diffs.Add("!object.ReferenceEquals(configuration, configuration2)"); - // get configuration from http address, should throw // get configuration with unsuccessful HTTP response status code TestUtilities.AssertFailIfErrors(context);