#azure #visual-studio #asp.net-core #azure-keyvault
#azure #visual-studio #asp.net-core #azure-keyvault
Вопрос:
Я использовал Visual Studio 4.8.04084 для отправки моего приложения в службы приложений Azure. Я настроил свои подключения для
- Конфигурация приложения Azure
- Хранилище ключей Azure
- База данных SQL Azure: мои данные
- База данных SQL Azure: служба идентификации
- Хранилище Azure
- Secrets.json
Когда я запускаю приложение через службу Kestrel локально, все работает нормально. Однако, когда я запускаю его через IIS, я получаю следующие проблемы:
Сообщение об исключении Visual Studio:
Возникло исключение: ‘Azure.Исключение RequestFailedException’ в Microsoft.Расширения.Конфигурация.AzureAppConfiguration.dll
Возникло исключение: ‘Azure.Исключение RequestFailedException’ в Navrae.WebApp.dll
Исключение типа ‘Azure.Исключение RequestFailedException’ произошло в Navrae.WebApp.dll но не был обработан в пользовательском коде.
Ошибка запроса службы.
Статус: 403 (запрещено)Заголовки:
Сервер: openresty / 1.17.8.2
Дата: Ср, 31 марта 2021 г. 15:39:42 GMT
Соединение: keep-alive
x-ms-request-id: 09275563-49a0-40e6-88e2-**** (расставляем точки на всякий случай)
x-ms-client-request-идентификатор: 9adcfd53-1a94-43df-aac8-**** (выделяем их на всякий случай)
x-ms-correlation-request-id: 09275563-49a0-40e6-88e2-**** (выделяем их на всякий случай)
Access-Control-Allow-Origin: *
Контроль доступа-Разрешить-Учетные данные: истинный
контроль доступа-Разоблачить-Заголовки: DNT, X-CustomHeader, Keep-Alive, User-Agent, X-Requested-With, If-Modified-Since, Cache-Control, Content-Type, Авторизация, x-ms-client-идентификатор запроса, x-ms-useragent, x-ms-content-sha256, x-ms-дата, хост, Принять, Принять-дата-время, Дата, Если совпадает, если не совпадает, токен синхронизации, x-ms-return-client-request-id, ETag, Последнее изменение, Ссылка, Памятная дата-время, повторная попытка после ms, x-ms-request-id, x-ms-client-session-id, x-ms-effective-locale,
строгая проверка подлинности WWW-Transport-Security: максимальный возраст = 15724800;Включает в себя содержимое Subdomains-Длина: 0‘iisexpress.exe ‘ (CoreCLR: clrhost): Загружено’C:Program Файлы (x86) Microsoft Visual Studio 2019 Сообщество Common7 IDE Удаленный отладчик x64 Время выполнения Microsoft.VisualStudio.Отладчик.Время выполнения.NetCoreApp.dll «. Пропущены символы загрузки. Модуль оптимизирован, и включена опция отладчика «Только мой код».
Программа ‘[22720] iisexpress.exe ‘ вышел с кодом -1 (0xffffffff).
Журнал службы приложений Azure:
at Azure.Data.AppConfiguration.ConfigurationClient.d__42.MoveNext() at
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at
Azure.Core.PageResponseEnumerator.FuncAsyncPageable`1.d__2.MoveNext() at
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at
System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.GetResult(Int16 token) at
Azure.Core.PageResponseEnumerator.FuncAsyncPageable`1.d__2.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) at Azure.AsyncPageable`1.d__6.MoveNext() at
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Azure.AsyncPageable`1.d__6.MoveNext() at
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at
System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.GetResult(Int16 token) at
Azure.AsyncPageable`1.d__6.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) at
Microsoft.Extensions.Configuration.AzureAppConfiguration.AzureAppConfigurationProvider.<>c__DisplayClass20_1.<b__2>d.MoveNext() at
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at
Microsoft.Extensions.Configuration.AzureAppConfiguration.AzureAppConfigurationProvider.<>c__DisplayClass20_1.<b__2>d.MoveNext() at
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at
System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() at
Microsoft.Extensions.Configuration.AzureAppConfiguration.TracingUtils.d__2.MoveNext() at
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at
System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() at
Microsoft.Extensions.Configuration.AzureAppConfiguration.AzureAppConfigurationProvider.d__28.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at
Microsoft.Extensions.Configuration.AzureAppConfiguration.AzureAppConfigurationProvider.d__20.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at
System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() at
Microsoft.Extensions.Configuration.AzureAppConfiguration.AzureAppConfigurationProvider.Load() at
Microsoft.Extensions.Configuration.ConfigurationRoot..ctor(IList`1 providers) at
Microsoft.Extensions.Configuration.ConfigurationBuilder.Build() at
Microsoft.Extensions.Hosting.HostBuilder.BuildAppConfiguration() at
Microsoft.Extensions.Hosting.HostBuilder.Build() at Navrae.WebApp.Program.d__0.MoveNext() in C:UsersWork LaptopsourcereposNavraeNavrae.WebAppProgram.cs:line 19
Сообщение о ссылке на журнал Azure*
{"error":{"code":"AuthenticationFailed","message":"Authentication failed. The 'Authorization' header is missing."}}
Когда я отлаживаю приложение, оно в основном завершается сбоем в CreateHostBuilder. Ни одна из моих строк подключения не заполняется, и я не знаю, где и как ее отлаживать дальше.
CreateHostBuilder
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((context, config) =>
{
var azConfigSettings = config.Build();
var azConfigConnection = azConfigSettings.GetConnectionString("REMOVED");
if (!string.IsNullOrEmpty(azConfigConnection))
{
// Use the connection string if it is available.
config.AddAzureAppConfiguration(azConfigConnection);
}
else if (Uri.TryCreate(azConfigSettings["Endpoints:REMOVED"], UriKind.Absolute, out var endpoint))
{
// Use Azure Active Directory authentication.
config.AddAzureAppConfiguration(options =>
{
options.Connect(endpoint, new DefaultAzureCredential());
});
}
var keyVaultEndpoint = new Uri(Environment.GetEnvironmentVariable("REMOVED")!);
config.AddAzureKeyVault(
keyVaultEndpoint,
new DefaultAzureCredential());
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
Ответ №1:
Ошибка, которую вы получаете, — HTTP 403 запрещен.
Что, вероятно, происходит, так это то, что:
- при локальном запуске вы используете свое удостоверение, которое имеет доступ к службам Azure.
- при запуске в IIS вы используете удостоверение сетевой службы, которое не имеет доступа к службам Azure.
В службах приложений Azure вы можете настроить его на запуск как «управляемое удостоверение», а затем предоставить этому управляемому удостоверению доступ к используемым вами службам.
Комментарии:
1. Поэтому я все стер и вношу небольшие изменения, чтобы увидеть, где что-то сломано. У меня было установлено значение управляемая идентификация с предоставленными разрешениями. Я попытался отключить это, но безрезультатно. Я собираюсь поискать несколько руководств о том, как добавить все это вручную, поскольку я все еще новичок в программировании и практически новичок в Azure.
2. Похоже, вы используете 5 служб, которым всем нужны разрешения, предоставленные управляемой идентификации. Если это все еще не работает, возможно, вы пропустили одно.