У меня есть проект ASP.Net Core 2.1.4, и я могу развернуть его из Visual Studio 2017 15.5.7 с помощью пункта меню «Публикация» и типа «Развернуть в Azure». Это работало просто отлично.
Я работаю над попыткой развертывания этого проекта с использованием сервера Bamboo Build / Deployment, и я получил свой скрипт powershell для загрузки опубликованных файлов в виде zip-файла на конечную точку REST Kudu Zipdeploy, и теперь я вижу развертывание в Куду список развертываний. Это было разработано в этом SO сообщении с помощью Дэвида Эббо.
Однако теперь, когда я пытаюсь получить доступ к API с помощью Postman после использования этого метода развертывания PowerSudu Kudu, я получаю статус неавторизованного 401.
Публикация точно такой же сборки с использованием метода меню публикации VS2017 позволяет мне получить прекрасный доступ к API, поэтому что-то не так в моей публикации Kudu через развертывание Bamboo и Powershell.
Вот моя функция Powershell;
Function Upload-ZipDeploy() {
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $PublishingUsername, $publishingPassword)))
$userAgent = "powershell/1.0"
if(!$SlotName)
{
$apiUrl = "https://$WebAppName.scm.azurewebsites.net/api/zipdeploy"
}
else {
$apiUrl = "https://$WebAppName-$SlotName.scm.azurewebsites.net/api/zipdeploy"
}
$filePath = $LocalPath
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method Post -InFile $filePath -ContentType "multipart/form-data"
}
Я прочитал сообщение на форуме MS, в котором говорится о конечной точке zip и получаю ошибку 401 после развертывания, где они решают ее, добавляя конечный / на URL развертывания. Я попробовал это с моим сценарием, но это не имело никакого значения.
Вот фрагмент из потока журнала, показывающий, что развертывание прошло успешно;
2018-04-27T13:34:37 Finished successfully.
2018-04-27T13:34:37 Running post deployment command(s)...
2018-04-27T13:34:37 Deployment successful.
2018-04-27 13:34:37.160 +00:00 [Information] Microsoft.AspNetCore.Hosting.Internal.WebHost: Request starting HTTP/1.1 POST http://127.0.0.1:13601/iisintegration 0
2018-04-27 13:34:37.177 +00:00 [Information] Microsoft.AspNetCore.Hosting.Internal.WebHost: Request finished in 16.935ms 202
Однако, когда я пытаюсь достичь одной из моих конечных точек API после этого развертывания Kudu, я получаю статус 401 Unauthorized.
При просмотре потока журнала для API в Azure я вижу следующее:
018-04-27 13:37:32.814 +00:00 [Critical] Microsoft.AspNetCore.Hosting.Internal.WebHost: Hosting startup assembly exception
System.InvalidOperationException: Startup assembly
Microsoft.AspNetCore.AzureKeyVault.HostingStartup failed to execute. See the
inner exception for more details. ---> System.IO.FileNotFoundException:
Could not load file or assembly
'Microsoft.AspNetCore.AzureKeyVault.HostingStartup, Culture=neutral,
PublicKeyToken=null'. The system cannot find the file specified.
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String
codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint,
StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean
throwOnFileNotFound, Boolean forIntrospection, Boolean
suppressSecurityChecks, IntPtr ptrLoadContextBinder)
at
System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName
assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly,
StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean
throwOnFileNotFound, Boolean forIntrospection, IntPtr ptrLoadContextBinder)
at System.Reflection.Assembly.Load(AssemblyName assemblyRef)
at
Microsoft.AspNetCore.Hosting.WebHostBuilder.BuildCommonServices
(AggregateException& hostingStartupErrors)
--- End of inner exception stack trace ---
В этот момент я застрял. Что мне здесь не хватает?
РЕДАКТИРОВАТЬ # 1 4/30/18
Я добавил расширения сайта в соответствии с предложением Дэвида Эббо. Я больше не получаю сообщение об ошибке «файл не найден» в потоке журнала Azure, но я все еще получаю ошибку 401 Несанкционированный, когда я пытаюсь получить доступ к своим конечным точкам API после развертывания с помощью Kupu ZipDeploy. Опять же, я не получаю эту ошибку, и все работает нормально, если я разверну, используя публикацию VS2017.
Вот мой скриншот расширений Azure на моем портале.
Расширения сайта портала Azure
РЕДАКТ. № 2 - 4/30/18
Хорошо, я считаю, что проблема конкретно связана с многоцелевыми структурами. Я удалил проекты из решения, которое требовало многоцелевой настройки, и теперь я могу развернуть их с помощью ZipDeploy в Bamboo, и я больше не получаю статус 401 Несанкционированный при доступе к конечным точкам. Я полагаю, что могу работать с этим параметром, поскольку проекты, для которых они были многоцелевыми, на самом деле не нужно развертывать в Azure, поскольку они были утилитами, связанными с БД, и я могу запускать их с локального сервера, предназначенного для базы данных Azure.