Я думаю, что код в настоящее время терпит неудачу, потому что вы не установили никакого значения для KeyVaultSuffix
свойства для AzureEnvrionment
, которое вы инициализировали.
Это предположение, если посмотреть информацию об ошибке, которой вы поделились, но я говорю это после просмотра соответствующего исходного кода для библиотек управления Azure для .NET
(примечание, что это может сделать любой желающий .. вот ссылка )
public async override Task ProcessHttpRequestAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
var adSettings = new ActiveDirectoryServiceSettings
{
AuthenticationEndpoint = new Uri(Environment.AuthenticationEndpoint),
TokenAudience = new Uri(Environment.ManagementEndpoint),
ValidateAuthority = true
};
string url = request.RequestUri.ToString();
if (url.StartsWith(Environment.GraphEndpoint, StringComparison.OrdinalIgnoreCase))
{
adSettings.TokenAudience = new Uri(Environment.GraphEndpoint);
}
string host = request.RequestUri.Host;
// I guess this is where your code is failing currently.
if (host.EndsWith(Environment.KeyVaultSuffix, StringComparison.OrdinalIgnoreCase))
{
Как исправить
Если нет веских причин, я бы не инициализировал объект AzureEnvironment
и вместо этого использовал бы уже доступные значения, поскольку это обеспечило бы правильность значений всех необходимых свойств.
Пример: AzureEnvironment.AzureGlobalCloud
. Посмотрите здесь для всех возможных значений
Измените этот код при инициализации AzureEnvironment
var credentials = SdkContext.AzureCredentialsFactory
.FromServicePrincipal(ApplicationID, Key, TenetID,
new AzureEnvironment()
{
AuthenticationEndpoint = @"https://login.windows.net/",
ManagementEndpoint = @"https://management.core.windows.net/",
ResourceManagerEndpoint = @"https://management.azure.com/",
GraphEndpoint = @"https://graph.windows.net/",
});
к этому коду
var credentials = SdkContext.AzureCredentialsFactory
.FromServicePrincipal(clientId,
clientSecret,
tenantId,
AzureEnvironment.AzureGlobalCloud);
Если у вас есть причины, по которым ни одно из доступных значений среды не является достаточным, убедитесь, что вы инициализировали все необходимые свойства для AzureEnvironment