Asp.net core mvc 如何在运行时更改AzureADOptions

Asp.net core mvc 如何在运行时更改AzureADOptions,asp.net-core-mvc,azure-active-directory,Asp.net Core Mvc,Azure Active Directory,我试图在运行时更改AzureADOptis。我尝试了以下操作,但在此之后,单击登录链接将使用旧值将其重定向到microsoft登录页面。期望是采取更新的选项 var options = new AzureADOptions { Instance = "https://login.microsoftonline.com/", Domain = "....", TenantId =

我试图在运行时更改AzureADOptis。我尝试了以下操作,但在此之后,单击登录链接将使用旧值将其重定向到microsoft登录页面。期望是采取更新的选项

var options = new AzureADOptions
            {
                Instance = "https://login.microsoftonline.com/",
                Domain = "....",
                TenantId = "....",
                ClientId = "....",
                CallbackPath = "/signin-oidc"
            };

            _optionsCache.TryRemove(AzureADDefaults.AuthenticationScheme);
            _optionsCache.TryAdd(AzureADDefaults.AuthenticationScheme, options);

您可以使用
OpenIdConnectOptions
,因为
AzureADOptions
也将映射到库中的
OpenIdConnectOptions
。您需要将
openidconnectpostconfigurations
注入DI系统,并在
之前调用
\u postconfigurations.PostConfigure
\u options cache.TryAdd

ConfigureServices.cs

services.AddSingleton<OpenIdConnectPostConfigureOptions>();
private readonly IAuthenticationSchemeProvider _schemeProvider;
private readonly IOptionsMonitorCache<OpenIdConnectOptions> _optionsCache;
private readonly OpenIdConnectPostConfigureOptions _postConfigureOptions;

public HomeController(IAuthenticationSchemeProvider schemeProvider, IOptionsMonitorCache<OpenIdConnectOptions> optionsCache, OpenIdConnectPostConfigureOptions postConfigureOptions)
{

    _schemeProvider = schemeProvider;
    _optionsCache = optionsCache;
    _postConfigureOptions = postConfigureOptions;
}
var OIDCoptions = new OpenIdConnectOptions
{                             
    Authority = "https://login.microsoftonline.com/YourTenantID/",              
    ClientId = "YourClientID",
    CallbackPath = "/signin-oidc"
};            
_postConfigureOptions.PostConfigure(AzureADDefaults.OpenIdScheme, OIDCoptions);
_optionsCache.TryRemove(AzureADDefaults.OpenIdScheme);
_optionsCache.TryAdd(AzureADDefaults.OpenIdScheme, OIDCoptions);